如何将时间从 UTC 转换为 EST?
Posted
技术标签:
【中文标题】如何将时间从 UTC 转换为 EST?【英文标题】:How to convert time from UTC to EST? 【发布时间】:2021-10-27 20:13:30 【问题描述】:我有一个这样的数据框:
dt | value
2019-01-01 00:00:00 +0000 UTC | 49.0
2019-01-01 01:00:00 +0000 UTC | 39.8
2019-01-01 02:00:00 +0000 UTC | 23.4
2019-01-01 03:00:00 +0000 UTC | 45.3
此时间戳采用 UTC 时区,但我想将其转换为 EST。这是我的尝试:
dtobj = pd.to_datetime(data['dt'], format='%Y-%m-%d %H:%M:%S +0000 %Z')
dtobj = dtobj.replace(tzinfo=ZoneInfo('US/Eastern'))
但它有以下错误:
TypeError: replace() 得到了一个意外的关键字参数 'tzinfo'
我没有找到明确的答案来解释为什么会发生此错误。还有其他方法可以转换时区吗?
【问题讨论】:
你是Seeking吗? 【参考方案1】:尝试使用dt.tz_convert
:
>>> df['dt'] = pd.to_datetime(df['dt'], format='%Y-%m-%d %H:%M:%S +0000 %Z')
>>> df['dt'] = df['dt'].dt.tz_convert('US/Eastern')
>>> df
dt value
0 2018-12-31 19:00:00-05:00 49.0
1 2018-12-31 20:00:00-05:00 39.8
2 2018-12-31 21:00:00-05:00 23.4
3 2018-12-31 22:00:00-05:00 45.3
>>>
【讨论】:
我试过了,它显示 AttributeError: Can only use .dt accessor with datetimelike values @Cyan 你还得用第一行 @Cyan 或者试试:df['dt'] = df['dt'].tz_convert('US/Eastern')
【参考方案2】:
您需要使用 pytz 模块(可从 PyPI 获得):
import pytz
from datetime import datetime
est = pytz.timezone('US/Eastern')
utc = pytz.utc
fmt = '%Y-%m-%d %H:%M:%S %Z%z'
dateTimeUtc= datetime(2016, 1, 24, 18, 0, 0, tzinfo=utc)
dateTimeUtc.astimezone(est).strftime(fmt)
【讨论】:
以上是关于如何将时间从 UTC 转换为 EST?的主要内容,如果未能解决你的问题,请参考以下文章
将 postgresql 中的 UTC 时区转换为 EST(本地时间)