web-dev-qa-db-ja.com

PythonでUTCをESTに変換し、夏時間を自動的に処理する方法は?

_UTC format_に日付と時刻のデータがたくさんある場合、それらをESTに変換するにはどうすればよいですか。

毎年自動的に-4(in summer)および-5(in winter)になるかどうかを判断できますか?ありがとう

6
saga

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'を使用する必要がある理由は、最後の2行の出力に例示されています。

7
thebjorn

pandasオブジェクトデータ型のシリーズがある場合、最初に pd.to_datetime() を使用してそれを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')

上記の方法は夏時間を処理します。より多くのタイムゾーンを確認したい場合は、pytz install pytzおよび

import pytz
pytz.common_timezones
1
hasan najeeb