从pytz文档中:
处理时间的首选方法是始终使用UTC,仅在生成人类可读的输出时才转换为本地时间。
假设由于某种原因,您的双手被绑住了并且需要处理当地时间,那么如果您在夏时制转换窗口中尝试对当前时间进行本地化,仍然会遇到问题。相同的情况datetime
可能会发生两次,一次是在白天,另一次是在标准时间,并且该localize
方法不知道如何解决冲突,除非您使用is_dst
参数明确地告诉它。
因此,要获取当前的UTC时间:
utc = pytz.timezone('UTC')
Now = utc.localize(datetime.datetime.utcNow())
并将其转换为您的本地时间(但仅在必须时):
la = pytz.timezone('America/Los_Angeles')
local_time = Now.astimezone(la)
编辑:正如@JF Sebastian)的评论中指出的那样,您使用的第一个示例datetime.Now(tz)
在所有情况下均适用。如上文所述,您的第二个示例在秋天过渡期间失败了。我仍然主张除显示外,所有时间均使用UTC而非本地时间。