[英]Python time zone aware datetime and UTC conversion
鉴于以下示例:
import datetime
import pprint
import time
now_unaware = datetime.datetime.now()
print "Time gotten from the OS: "
pprint.pprint now_unaware
#OUTPUT: datetime.datetime(2016, 4, 7, 17, 4, 54, 689054)
#COMMENT: The time is correct for the zone, but now_unaware doesn't explicitly know what zone is this.
print "My timezone:"
pprint.pprint(time.tzname[time.daylight])
##OUTPUT: 'CEST'
请确认或反驳我的假设。
假设
鉴于以上信息,我应该有足够的信息来:
now_unaware
在没有任何时区硬编码的情况下知道时区,因为“CEST”明确定义了与 UTC 的关系now_unaware
转换为 UTC你的第一个假设是正确的。 听起来您想本地化您不知道的时间对象。
你的第二个假设有点正确。 在 Python 3 中,由于datetime.timezone ,使用标准库更容易处理时区。
但是在 Python 2 中,仅使用标准库无法轻松完成。 您将需要子类tzinfo 。 查看 tzinfo 链接中的“示例 tzinfo 类”。
最后,你有解决问题的正确心态。 仅使用标准库来做到这一点确实很好。 我认为 Python 3 解决了这个问题,这就是 Python 2 用户倾向于将pytz包添加到他们的项目的原因。
如果你有兴趣,有关于它的冗长的讨论在这里。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.