Python时区感知的datetime和UTC转换

2024-09-28 23:27:54 发布

您现在位置:Python中文网/ 问答频道 /正文

举个例子:

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设计缺陷,要么是处理问题的错误心态

Tags: theimport信息zoneoutputdatetimetimeis
1条回答
网友
1楼 · 发布于 2024-09-28 23:27:54

你的第一个假设是正确的。听起来你想定位你的时间对象。你知道吗

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

但是在python2中,仅使用标准库是不容易做到的。您将需要子类tzinfo。请看tzinfo链接中的“示例tzinfo类”。你知道吗

最后,你对解决问题的态度是正确的。如果只使用标准库就可以做到这一点。我认为python3解决了这个问题,这就是python2用户倾向于向他们的项目中添加pytz包的原因。你知道吗

如果你感兴趣,有一个关于它的冗长的讨论here。你知道吗

相关问题 更多 >