来自C#,我学会了在处理日期/时间时始终要注意时区。Python具有正确的时区处理功能,以及诸如datetime.utcnow之类的有用帮助程序,它可以直接处理日期/时间。但是,在阅读python文档时,我注意到有一个称为“天真的”日期时间实例的东西。据我所知,这只是一个没有任何时区的日期时间。
天真的日期时间的用例是什么?没有时区的日期时间不是很没用吗?为什么datetime.now()不在当前语言环境(如.NET)中返回日期时间?
我确定我缺少了一些关键的东西,所以我希望有人可以对此有所启发。
天真日期时间在您不知道或不想指定时区的情况下很有用。
例如,想象一下,您正在解析一个古老的外部程序日志,并且您不知道日期时间在哪个时区中-最好的选择是将它们保持原样。将时区附加到此类日期时间可能会导致错误,因为您会假装拥有实际上没有的信息。
为什么datetime.now()不在当前语言环境(如.NET)中返回日期时间?
时区作为国家的行政管理概念,经常会发生变化。IIRC,Python开发人员选择避免标准库附带时区数据库,因为已安装的标准库的预期寿命(通常)远大于此类数据库中包含的数据的正确性。
相反,您应该下载该pytz软件包,并经常对其进行更新。然后,您可以通过以下方式获取时区感知的本地时间
from time import tzname
from pytz import timezone
from datetime import datetime
timezone(tzname[0]).localize(datetime.now())
Run Code Online (Sandbox Code Playgroud)