微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在 Python 中将美国/东部时区转换为美国/中部时区

如何解决如何在 Python 中将美国/东部时区转换为美国/中部时区

我正在尝试将“美国/东部”日期时间转换为另一个时区的等效日期,例如“美国/中部”。似乎使用 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')

我为 est 创建了一个日期时间对象:

ny_dt = DT.datetime(2021,3,1,9,30,est)

这是 ny_dt 的输出

Out[6]: datetime.datetime(2021,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,8,26,tzinfo=<DstTzInfo 'US/Central' CST-1 day,18:00:00 STD>)

因此这将 930am EST 转换为 826am CST,这是不正确的。应该是美国中部标准时间上午 830 点,或者正好提前一小时。做这个的最好方式是什么?谢谢!

解决方法

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)
ny_dt1 = est.localize(ny_dt)
chicago_dt = ny_dt1.astimezone(cst)

输出:

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

来自documentation

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。