记录Python时区处理

in 默认分类 with 0 comment

今天意外发现

import pytz,datetime
tz = pytz.timezone('Asia/Shanghai')
print(datetime.datetime.now(tzinfo=tz))

得到的是datetime.datetime(2020, 7, 7, 0, 0, tzinfo=<DstTzInfo 'Asia/Shanghai' LMT+8:06:00 STD>)
注意到不是UTC+8:00,而是+8:06。

LMT(Local Mean Time)是一种地方观测太阳平均计时的时间,地方不同所以会有差异。
CST(China Standard Time)表示中国标准时间,代表的是UTC+8:00。

实际上按照pytz的文档,构造本地时间的方法是使用localize()方法。

import pytz,datetime
tz = pytz.timezone('Asia/Shanghai')
print(tz.localize(datetime.datetime.now()))

这样就没问题了

参考:http://bbs.raindi.net/thread-16675-1-1.html

Responses