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 这里的PRC
和Asia/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