簡體   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