如何在Python中将US/Eastern时区转换为US/Central时区

3
我试图将一个'US/Eastern'的日期时间转换成另一个时区的等效日期时间,例如'US/Central'。似乎使用pytz和astimezone是实现这一目标的好方法,可以参考以下链接: Converting timezone-aware datetime to local time in Python
import pytz
import datetime as DT
est = pytz.timezone('US/Eastern')
cst = pytz.timezone('US/Central')

我为东部标准时间创建了一个日期时间对象:
ny_dt = DT.datetime(2021, 3, 1, 9, 30, 0, 0, est)

这是ny_dt的输出结果:

Out[6]: datetime.datetime(2021, 3, 1, 9, 30, tzinfo=<DstTzInfo 'US/Eastern' LMT-1 day, 19:04:00 STD>)

我随后尝试将此日期时间转换为使用定义的cst时区:

chicago_dt = ny_dt.astimezone(cst)

以下是 "chicago_dt" 的输出结果:
Out[8]: datetime.datetime(2021, 3, 1, 8, 26, tzinfo=<DstTzInfo 'US/Central' CST-1 day, 18:00:00 STD>)

因此,将930am EST转换为826am CST是不正确的。应该是830am CST,即早一个小时。有什么最好的方法来做到这一点?谢谢!

1个回答

1
import pytz
import datetime as DT
est = pytz.timezone('US/Eastern')
cst = pytz.timezone('US/Central')
ny_dt = DT.datetime(2021, 3, 1, 9, 30, 0, 0)
ny_dt1 = est.localize(ny_dt)
chicago_dt = ny_dt1.astimezone(cst)

输出:

ny_dt1
datetime.datetime(2021, 3, 1, 9, 30, tzinfo=<DstTzInfo 'US/Eastern' EST-1 day, 19:00:00 STD>)
chicago_dt
datetime.datetime(2021, 3, 1, 8, 30, tzinfo=<DstTzInfo 'US/Central' CST-1 day, 18:00:00 STD>)

来自文档

这个库与Python API文档中记录的tzinfo实现不同;如果你想创建本地的壁钟时间,你需要使用本文档中记录的localize()方法。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接