Python datetime.replace转换时区为什么少几分钟

Python datetime.replace转换时区为什么少几分钟

datetime(2022,8,5,0,0,0).replace(tzinfo=pytz.timezone('PRC')).timestamp()
得到1659628440,时间戳为什么不是整点;


回答:

>>> pytz.timezone('PRC')

<DstTzInfo 'PRC' LMT+8:06:00 STD>

>>> pytz.timezone('Asia/Shanghai')

<DstTzInfo 'Asia/Shanghai' LMT+8:06:00 STD>

pytz 这里的PRCAsia/Shanghai时间都比UTC多了8小时零6分钟,并不是北京时间
这里可以用astimezone方法

>>> datetime.datetime(2022,8,5,0,0,0).astimezone(pytz.timezone('UTC'))

datetime.datetime(2022, 8, 4, 16, 0, tzinfo=<UTC>)

>>> datetime.datetime(2022,8,5,0,0,0).astimezone(pytz.timezone('PRC'))

datetime.datetime(2022, 8, 5, 0, 0, tzinfo=<DstTzInfo 'PRC' CST+8:00:00 STD>)


回答:

pytz:

This library differs from the documented Python API for tzinfo implementations; if you want to create local wallclock times you need to use the localize() method documented in this document.


回答:

非常感谢zhwei的帮助,帮助我找到了原因;
然后用fefe提供的localize(),找到了直接用本地时间进行转换的简洁方法

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

timezone.localize(day_time).timestamp()

以上是 Python datetime.replace转换时区为什么少几分钟 的全部内容, 来源链接: utcz.com/a/157754.html

回到顶部