繁体   English   中英

Python 将夏令时转换为标准时区时间

[英]Python Convert Daylight Saving time to Standard Zone time

我有来自外地(佛罗里达州)的数据,它在当地时间保存。 佛罗里达有夏令时。 所以,我想将其转换为 EST 区域。 我该怎么做? 我的代码:

local_df.index = DatetimeIndex(['2019-06-01 06:58:45', '2019-10-01 06:59:00',
               '2019-10-01 06:59:15', 
               '2020-07-18 09:16:30', '2020-07-18 09:16:45'],
              dtype='datetime64[ns]', name='', freq=None)
est_df.index = local_df.index.tz_localize(tz='EST')
est_df.index = DatetimeIndex(['2019-06-01 06:58:45-05:00', '2019-10-01 06:59:00-05:00',
               '2019-10-01 06:59:15-05:00','2020-07-18 09:16:30-05:00', '2020-07-18 09:16:45-05:00'],
              dtype='datetime64[ns]', name='', freq=None)

我上面的代码实际上并没有将当地时间转换为东部标准时间,它只附加了与 UCT 的时差。 这是不正确的。

请注意, EST不是时区,而是在一年中的特定时间与特定时区的 UTC 的偏移量。 我建议使用IANA 时区名称来代替明确的地理归属。 旁注:佛罗里达有两个时区; 美国/东部和美国/中部。

此外,要将UTC 时间转换为时区时间,您必须先本地化为 UTC。 你的代码可能看起来像

import pandas as pd

dti = pd.DatetimeIndex(['2019-06-01 06:58:45', '2019-10-01 06:59:00', '2019-10-01 06:59:15', 
                        '2020-07-18 09:16:30', '2020-07-18 09:16:45'])

dti_UTC = dti.tz_localize('UTC')
dti_USEastern = dti_UTC.tz_convert('US/Eastern')

# dti_USEastern
# DatetimeIndex(['2019-06-01 02:58:45-04:00', '2019-10-01 02:59:00-04:00',
#                '2019-10-01 02:59:15-04:00', '2020-07-18 05:16:30-04:00',
#                '2020-07-18 05:16:45-04:00'],
#               dtype='datetime64[ns, US/Eastern]', freq=None)

但是,如果输入类似于local time ,例如美国/东部,您可以直接本地化到该时区:

dti_USEastern = dti.tz_localize('US/Eastern')

# dti_USEastern
# DatetimeIndex(['2019-06-01 06:58:45-04:00', '2019-10-01 06:59:00-04:00',
#                '2019-10-01 06:59:15-04:00', '2020-07-18 09:16:30-04:00',
#                '2020-07-18 09:16:45-04:00'],
#               dtype='datetime64[ns, US/Eastern]', freq=None)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM