Skip to content

Instantly share code, notes, and snippets.

@a-hisame
Created August 25, 2017 14:24
Show Gist options
  • Star 3 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save a-hisame/85ed049d622f5a88c570c252f6611ff0 to your computer and use it in GitHub Desktop.
Save a-hisame/85ed049d622f5a88c570c252f6611ff0 to your computer and use it in GitHub Desktop.
pytzの仕様厳格化によって時刻情報なしだとAsia/TokyoがLMT+9:19:00になる場合の対処とか
#!/usr/bin/env python
# -*- coding: utf-8 -*-
'''
日本語の記事とかだと - http://qiita.com/higitune/items/0ca244373d380cf1c060
'''
import datetime
import pytz
# jst は <DstTzInfo 'Asia/Tokyo' LMT+9:19:00 STD>
jst = pytz.timezone('Asia/Tokyo')
# jst -> utc をやってみるが
# 9時間19分前に変換されてしまう
bad_utc_dt = datetime.datetime(2017, 8, 25, 9, 0, tzinfo=jst)
# datetime.datetime(2017, 8, 24, 23, 41, tzinfo=<UTC>)
pytz.utc.normalize(bad_utc_dt)
# Timezoneは土地だけで決まらず、その時刻を加味しないと決まらない
# そのため、時刻を無理やり与えて +09:00 となる JST を作り出してやる
# 西暦1888年以降は +09:00 なので、それ以降の時刻を与えればよい
# ref: http://aoyagikouhei.blog8.fc2.com/blog-entry-61.html
# datetime.datetime(2017, 8, 25, 9, 0, tzinfo=<DstTzInfo 'Asia/Tokyo' JST+9:00:00 STD>)
jstdt = jst.localize(datetime.datetime(2017, 8, 25, 9, 0))
# datetime.datetime(2017, 8, 25, 0, 0, tzinfo=<UTC>)
pytz.utc.normalize(jstdt)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment