【发布时间】:2021-09-14 23:05:45
【问题描述】:
from datetime import datetime
from pytz import timezone
d1 = datetime.now(tz = timezone('Asia/Calcutta'))
d2 = datetime(2019,12,12,12,12,12,12)
zone = timezone('Asia/Calcutta')
d2 = zone.localize(d2)
d3 = datetime(2019,12,12,12,12,12,12,tzinfo = timezone('Asia/Calcutta'))
print(d1,d1.tzinfo.tzname)
print(d2,d2.tzinfo.tzname)
print(d3,d3.tzinfo.tzname)
这是我得到的输出
2021-07-03 14:00:03.135000+05:30 <bound method DstTzInfo.tzname of <DstTzInfo 'Asia/Calcutta' IST+5:30:00 STD>>
2019-12-12 12:12:12.000012+05:30 <bound method DstTzInfo.tzname of <DstTzInfo 'Asia/Calcutta' IST+5:30:00 STD>>
2019-12-12 12:12:12.000012+05:53 <bound method DstTzInfo.tzname of <DstTzInfo 'Asia/Calcutta' LMT+5:53:00 STD>>
只需查看时区,正如我在最后一个 d3 对象中尝试使用 tzinfo 传递时区时从输出中看到的那样,它给了我 LMT+5:53 而不是 +5:30 ,但第一个两个日期对象工作正常,帮帮我
【问题讨论】:
-
请做一些研究,这是一个众所周知的问题,您不能将 pytz 时区对象直接设置为 tzinfo。此外,如果您可以使用 Python 3.9 或更高版本,那么您一开始就不应该使用 pytz。使用zoneinfo。没有这样的担心。
标签: python datetime timezone pytz