如何使用Python将UTC转换为EST并自动进行日光节约?

2024-05-13 23:35:56 发布

您现在位置:Python中文网/ 问答频道 /正文

如果我在UTC format中有一堆日期和时间的数据,如何将它们转换为EST

它可以确定它们每年什么时候会自动地-4(in summer)和-5(in winter)? 谢谢


Tags: 数据informat时间estutcsummerwinter
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'

winter = datetime(2016, 1, 24, 18, 0, 0, tzinfo=utc)
summer = datetime(2016, 7, 24, 18, 0, 0, tzinfo=utc)

print winter.strftime(fmt)
print summer.strftime(fmt)

print winter.astimezone(est).strftime(fmt)
print summer.astimezone(est).strftime(fmt)

将打印:

2016-01-24 18:00:00 UTC+0000
2016-07-24 18:00:00 UTC+0000
2016-01-24 13:00:00 EST-0500
2016-07-24 14:00:00 EDT-0400

最后两行输出举例说明了需要使用'US/Eastern'而不是'EST'的原因。

如果您有一个具有对象数据类型的pandas序列,那么可以首先使用pd.to_datetime()将其转换为日期时间序列

df[col] = pd.to_datetime(your_series, format = '%Y-%m-%d %H:%M:%S', errors ='coerce')

使用series.dt.tz检查是否可以识别时区

df[col].dt.tz

如果它不知道时区,我们应该使用series.dt.tz_localize()使它知道时区。另外,请阅读此函数的不明确且不存在的参数

df[col] = your_series[col].dt.tz_localize('UTC')

现在通过series.dt.tz_convert()将这个序列转换成所需的时区

df[col] = your_series[col].dt.tz_convert('US/Eastern')

以上方法将考虑夏令时。如果您想查看更多时区,可以pip安装pytz和

import pytz
pytz.common_timezones

相关问题 更多 >