Ras*_*tio 7 python timezone pytz
>>> t = datetime.datetime(2016, 11, 27, 14, 46, 0, 0)
tz = pytz.timezone('America/Vancouver')
utc = tz.localize(t).astimezone(pytz.utc)
now = datetime.datetime.utcnow()
>>> print t, tz, utc, now
2016-11-27 14:46:00 America/Vancouver 2016-11-27 22:46:00+00:00 2016-10-27 21:49:33.723605
Run Code Online (Sandbox Code Playgroud)
为什么为UTC == 2016年11月27日22:46:00 + 00:00,而不是2016年11月27日21:46:00 + 00:00
谢谢
好吧,这是因为温哥华遵守夏令时(请参阅此)
在2016年3月13日至11月6日之间,温哥华为UTC-7。11月6日之后是UTC-8。因此,今天(2016年10月27日)下午2:46(14:46)仍然属于时区的DST部分,此时UTC就是14 + 7 = 21(9:46 PM)。
但是,在11月27日(您要转换的日期),温哥华已经回到“常规”(非夏令时)时间UTC-8,因此,2016年11月27日在温哥华14:46 PM是14 + 8 = 22 (晚上10:46)。事实上,在11月6日之后的任何日期都将是这样。