如何将时间从 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(本地时间)

将 UTC 转换为 EST 不适用于 Android 上的夏令时

在 Synapse 中将时间戳从字符串转换为 EST 时间

在 Rails 3 中将 UTC 转换为本地时间

如何从 UTC 转换为 tzutc() 时区?

如何在javascript中将日期时间从用户时区转换为EST [重复]