繁体   English   中英

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

[英]How do I convert US/Eastern timezone to US/Central in 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 创建了一个日期时间 object:

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

这是 ny_dt 的 output:

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)

这是芝加哥 dt 的 output:

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

因此,这将美国东部标准时间上午 930 点转换为美国中部标准时间上午 826 点,这是不正确的。 应该是美国中部标准时间上午 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, 0)
ny_dt1 = est.localize(ny_dt)
chicago_dt = ny_dt1.astimezone(cst)

Output:

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() 方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM