Python: ローカルのタイムゾーン情報付きで日時表記文字列を読み込む
Python の datetime クラスは、"naive" と "aware" の 2種類の顔を持つ。
"aware" な datetime はタイムゾーンの情報を持ち、"naive" は持たない。
プログラム内部では "aware" な datetime を利用し、"naive" は入出力境界のみにとどめるのがセオリーだ。
タイムゾーンの自動認識には、dateutil.tz.tzlocal を使うのが最も適当な様子。
たとえば datetime.strptime を使って日時を認識するコードは以下のようになる。
>>> from datetime import datetime >>> from dateutil.tz import tzlocal >>> t = datetime.strptime('201410281234', '%Y%m%d%H%M').replace(tzinfo=tzlocal()) >>> t datetime.datetime(2014, 10, 28, 12, 34, tzinfo=tzlocal())
datetime#astimezone を使ってタイムゾーンを変更する。
>>> import pytz >>> t.astimezone(pytz.utc) datetime.datetime(2014, 10, 28, 3, 34, tzinfo=<UTC>)
epoch time への変換には一手間かかる。calendar.timegm を使うのがベストプラクティスのようだ。
>>> import calendar >>> calendar.timegm(t.timetuple()) 1414499640 >>> calendar.timegm(t.astimezone(pytz.utc).timetuple()) 1414467240
0 件のコメント:
コメントを投稿