我们可以使用time.tzname获取本地时区名称,但该名称与之不兼容pytz.timezone.
实际上,返回的名称time.tzname含糊不清.此方法('CST', 'CST')在我的系统中返回,但"CST"可以指示四个时区:
是否有可能,如果是,如何获得datetime.timezone用于datetime.datetime.fromtimestamp()将POSIX时间戳(自纪元以来的秒数)转换为datetime对象的时区(即UTC偏移或具有该偏移的实例)?
datetime.datetime.fromtimestamp()将POSIX时间戳转换为天真datetime对象(即没有a tzinfo),但使用系统的语言环境将其调整为当地时区和当时生效的UTC偏移量.
例如,使用日期2008-12-27午夜UTC(自纪元以来40*356*86400秒):
>>> datetime.datetime.fromtimestamp(40 * 356 * 86400)
datetime.datetime(2008, 12, 27, 1, 0)
Run Code Online (Sandbox Code Playgroud)
该时间戳datetime在早上1点被转换为对象(当时是在CET/CEST时区).100天后,这是结果:
>>> datetime.datetime.fromtimestamp((40 * 356 + 100) * 86400)
datetime.datetime(2009, 4, 6, 2, 0)
Run Code Online (Sandbox Code Playgroud)
现在是凌晨2点.这是因为到那时,DST是活跃的.
我希望它datetime.datetime.fromtimestamp()会tzinfo在返回的datetime实例中设置它的用途,但事实并非如此.
我想打印时区.我用%Z但不打印:
import datetime
now = datetime.datetime.now()
print now.strftime("%d-%m-%Y")
print now.strftime("%d-%b-%Y")
print now.strftime("%a,%d-%b-%Y %I:%M:%S %Z") # %Z doesn't work
Run Code Online (Sandbox Code Playgroud)
我可能需要导入pytz吗?