python時間:datatime


公式サイトの時間フォーマットの説明:https://docs.python.org/3/library/datetime.html#strftime-strptime-behavior
インポートモジュール:from datetime import datetime
システムの現在時刻の表示
now = datetime.now()
print (now)

実行結果:
2018-07-27 15:19:50

strをdatetimeに変換
cday = datetime.strptime('2016-6-1 18:19:59', '%Y-%m-%d %H:%M:%S')
print (cday)

実行結果:
2016-06-01 18:19:59

datetimeをstrに変換する:お客様に見せる
now = datetime.now()
print(now.strftime('%a, %b %d %H:%M'))

実行結果:
Fri, Jul 27 03:56

datetime加減:計算
from datetime import datetime, timedelta


now = datetime.now()
print (now)
delta_add = now + timedelta(days = 3, hours=10, minutes = 1)
print(delta_add)
delta_add = now - timedelta(days = 1, hours=10, minutes = 1)
print(delta_add)

実行結果:
2018-07-27 04:01:57.861809
2018-07-30 14:02:57.861809
2018-07-25 18:00:57.861809

ローカル時間をUTC時間に変換:timezone
from datetime import datetime, timedelta, timezone
tz_utc_8 = timezone(timedelta(hours=8)) #     UTC+8:00
print (tz_utc_8)
now = datetime.now()
print (now)

実行結果:
UTC+08:00
2018-07-29 03:27:01.248631

ローカル時間をUTC時間に変換:replace
dt = now.replace(tzinfo=tz_utc_8) #      UTC+8:00
print (dt)

実行結果:
2018-07-29 03:27:01.248631+08:00

タイムゾーン変換:astimezone
utc_dt = datetime.utcnow().replace(tzinfo=timezone.utc) #   UTC  ,        UTC+0:00:
print(utc_dt)

bj_dt = utc_dt.astimezone(timezone(timedelta(hours=8))) # astimezone()          
print(bj_dt)

tokyo_dt = bj_dt.astimezone(timezone(timedelta(hours=9)))  # astimezone() bj_dt         :
print(tokyo_dt)

実行結果:
2018-07-29 03:42:40.795549+00:00
2018-07-29 11:42:40.795549+08:00
2018-07-29 12:42:40.795549+09:00

まとめ:
  • タイムゾーン変換は必ずUTCタイムゾーン付き時間で変換してください.
  • タイムゾーン変換+00:00のベースタイムゾーンから変換せず、bj_dt-->tokyo_dtですが、前の時間帯が正しい
  • であることを確認してください.