python - 如何使日期时间时区感知和转换时区
问题描述
我有 3 个包含多列的数据框,其中 2 个的日期时间是 UTC,另一个是“欧洲/阿姆斯特丹”。然而,他们仍然不知情。
如何使这些数据集时区感知,并将“欧洲/阿姆斯特丹”转换为 UTC?
日期时间在每个数据集的索引中。
解决方案
如果您使用的是 pandas Dataframes 和 Python 3,您可以这样做:
import pandas as pd
values = {'dates': ['20190902101010','20190913202020','20190921010101'],
'status': ['Opened','Opened','Closed']
}
df = pd.DataFrame(values, columns = ['dates','status'])
df['dates_datetime'] = pd.to_datetime(df['dates'], format='%Y%m%d%H%M%S')
df['dates_datetime_tz'] = df.dates_datetime.dt.tz_localize('UTC').dt.tz_convert('Asia/Kolkata')
print (df)
print (df.dtypes)
结果:
dates status dates_datetime dates_datetime_tz
0 20190902101010 Opened 2019-09-02 10:10:10 2019-09-02 15:40:10+05:30
1 20190913202020 Opened 2019-09-13 20:20:20 2019-09-14 01:50:20+05:30
2 20190921010101 Closed 2019-09-21 01:01:01 2019-09-21 06:31:01+05:30
我已经从 UTC 转换为特定的 TZ,你可以选择任何你需要的。