鉴于以下示例:
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,而无需导入任何其他库答案 0 :(得分:1)
你的第一个假设是正确的。听起来你想本地化你不知道的时间对象。
你的第二个假设是有道理的。在Python 3中,由于datetime.timezone,使用标准库的时区更容易。
但是在Python 2中,只有标准库才能轻松完成。您需要继承tzinfo。查看tzinfo链接中的“示例tzinfo类”。
最后,你对解决问题有了正确的心态。仅使用标准库这样做确实很好。我认为Python 3解决了这个问题,这就是为什么Python 2用户倾向于将pytz包添加到他们的项目中。
如果您有兴趣,可以对它进行冗长的讨论here。