注- 2020 年現在、.utcnow()
orは使用しないでください.utcfromtimestamp(xxx)
。おそらくpython3に移行したので、タイムゾーン対応のdatetimeオブジェクトを使用する必要があります。
>>> from datetime import timezone
>>>
>>> # alternative to '.utcnow()'
>>> dt_now = datetime.datetime.now(datetime.timezone.utc)
>>>
>>> # alternative to '.utcfromtimestamp()'
>>> dt_ts = datetime.fromtimestamp(1571595618.0, tz=timezone.utc)
詳細については、 https ://blog.ganssle.io/articles/2019/11/utcnow.html を参照してください。
元の回答(2010年から):
datetime モジュールのutcnow()関数を使用して、現在の UTC 時刻を取得できます。
>>> import datetime
>>> utc_datetime = datetime.datetime.utcnow()
>>> utc_datetime.strftime("%Y-%m-%d %H:%M:%S")
'2010-02-01 06:59:19'
上記の Tom によるリンク: http://lucumr.pocoo.org/2011/7/15/eppur-si-muove/ は次のように述べています。
UTC は夏時間のないタイムゾーンであり、過去に設定変更のないタイムゾーンです。
常に UTC で時間を測定して保存します。
時間を取った場所を記録する必要がある場合は、別に保管してください。
現地時間とタイムゾーンの情報を保存しないでください!
注- データのいずれかが DST を使用する地域にある場合は、pytz
ジョン ミリキンの回答を使用して確認してください。
特定の文字列から UTC 時刻を取得する必要があり、幸運にも DST を使用しない世界の地域にいる場合、または DST が適用されていない UTC からのオフセットのみのデータがある場合:
--> オフセット値の基準として現地時間を使用:
>>> # Obtain the UTC Offset for the current system:
>>> UTC_OFFSET_TIMEDELTA = datetime.datetime.utcnow() - datetime.datetime.now()
>>> local_datetime = datetime.datetime.strptime("2008-09-17 14:04:00", "%Y-%m-%d %H:%M:%S")
>>> result_utc_datetime = local_datetime + UTC_OFFSET_TIMEDELTA
>>> result_utc_datetime.strftime("%Y-%m-%d %H:%M:%S")
'2008-09-17 04:04:00'
--> または、datetime.timedelta() を使用して、既知のオフセットから:
>>> UTC_OFFSET = 10
>>> result_utc_datetime = local_datetime - datetime.timedelta(hours=UTC_OFFSET)
>>> result_utc_datetime.strftime("%Y-%m-%d %H:%M:%S")
'2008-09-17 04:04:00'
アップデート:
Python 3.2datetime.timezone
が利用可能になったので。以下のコマンドを使用して、タイムゾーン対応の日時オブジェクトを生成できます。
import datetime
timezone_aware_dt = datetime.datetime.now(datetime.timezone.utc)
タイムゾーンの変換を行う準備ができている場合は、これを読んでください。
https://medium.com/@eleroy/10-things-you-need-to-know-about-date-and-time-in-python-with-datetime-pytz-dateutil-timedelta-309bfbafb3f7