繁体   English   中英

Python时区感知日期时间和UTC转换

[英]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设计缺陷,要么是解决问题的错误心态

你的第一个假设是正确的。 听起来您想本地化您不知道的时间对象。

你的第二个假设有点正确。 在 Python 3 中,由于datetime.timezone ,使用标准库更容易处理时区。

但是在 Python 2 中,仅使用标准库无法轻松完成。 您将需要子类tzinfo 查看 tzinfo 链接中的“示例 tzinfo 类”。

最后,你有解决问题的正确心态。 仅使用标准库来做到这一点确实很好。 我认为 Python 3 解决了这个问题,这就是 Python 2 用户倾向于将pytz包添加到他们的项目的原因。

如果你有兴趣,有关于它的冗长的讨论在这里

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM