将天真的时间和 atzinfo转换为 UTC 时间的正确方法是什么?说我有:
d = datetime(2009, 8, 31, 22, 30, 30)
tz = timezone('US/Pacific')
第一种方式,pytz 启发:
d_tz = tz.normalize(tz.localize(d))
utc = pytz.timezone('UTC')
d_utc = d_tz.astimezone(utc)
第二种方式,来自UTCDateTimeField
def utc_from_localtime(dt, tz):
    dt = dt.replace(tzinfo=tz)
    _dt = tz.normalize(dt)
    if dt.tzinfo != _dt.tzinfo:
        # Houston, we have a problem...
        # find out which one has a dst offset
        if _dt.tzinfo.dst(_dt):
            _dt -= _dt.tzinfo.dst(_dt)
        else:
            _dt += dt.tzinfo.dst(dt)
    return _dt.astimezone(pytz.utc)
不用说,这两种方法在相当多的时区产生不同的结果。
问题是——正确的方法是什么?