datetime.datetime.utcnow()
既然这datetime
明显是UTC datetime
,为什么它没有任何时区信息?
我预计这将包含tzinfo
个.
datetime.datetime.utcnow()
既然这datetime
明显是UTC datetime
,为什么它没有任何时区信息?
我预计这将包含tzinfo
个.
这意味着它在时区上太幼稚了,所以你不能用datetime.astimezone
你可以给它一个这样的时区
import pytz # 3rd party: $ pip install pytz
u = datetime.utcnow()
u = u.replace(tzinfo=pytz.utc) #NOTE: it works only with a fixed utc offset
现在您可以更改时区
print(u.astimezone(pytz.timezone("America/New_York")))
要获取给定时区中的当前时间,可以直接将tzinfo传递给datetime.now()
:
#!/usr/bin/env python
from datetime import datetime
import pytz # $ pip install pytz
print(datetime.now(pytz.timezone("America/New_York")))
它适用于任何时区,包括遵守夏令时(DST)的时区,也就是说,它适用于可能在不同时间具有不同utc偏移的时区(非固定utc偏移).不要使用tz.localize(datetime.now())
——当本地时间不明确时,它可能会在DST转换结束时失败.