记录Python时区处理

今天意外发现

1
2
3
4
5
6
7

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()方法。

1
2
3
4
5
6
7

import pytz,datetime

tz = pytz.timezone('Asia/Shanghai')

print(tz.localize(datetime.datetime.now()))

这样就没问题了

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


记录Python时区处理
https://hunsh.net/archives/77/
发布于
2020年7月7日
许可协议