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 创建了一个 datetime 对象:
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)
这是 chiago_dt 的输出:
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)
输出:
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>)
从文档
这个库不同于记录在案的用于 tzinfo 实现的 Python API;如果您想创建本地挂钟时间,您需要使用本文档中记录的 localize() 方法。
推荐阅读
- jquery - 将标签值绑定到 TextBox 的 MaxLenght
- java - 使用 Java DOM 重新组织 XML - Hierarchy_Request_Error
- angular - 如何设计响应的打字稿模型?
- angular - 如何使用angular2中的primeng将控制台中的数据绑定到html
- java - 如何使用 Java 中的流在字符串列表中查找最大长度?
- bash - WebStorm:使用“run”运行时出现bash脚本错误,但在控制台中执行时有效
- json - SQL Server 插入带有其他外部参数的 JSON 数据
- javascript - 在 HTML 中切换图像隐藏/可见
- android-studio - 如何配置 Android Studio 以识别带有 SystemApi 注释的方法
- javascript - 物化日期选择器仅在单击完成按钮时更新