SSブログ

Python で日本時間を表示するには [プログラム三昧]このエントリーを含むはてなブックマーク#

Python で日本時間を表示するには,何が必要なんでしょうか. この話題は,ググると,わんさか転がっているので,いまさら書かなくてもいいかな.

TZINFOという仕掛け

Pythonでは,夏時間などに代表される,どんなに無茶な時間制度にも対応できるように, "datetime.tzinfo" という abstract クラスが用意されています. このクラスを継承したクラスを準備するだけで,どの国の時間にも対応出来ます.

ただ,逆に言うと,このクラスを準備しないとローカルな時間には対応出来ないのです. そこで,必要最低限のメソッドを実装したクラスを作成してみました.

import datetime

class JapanTZ(datetime.tzinfo):
    def tzname(self, dt):
        return "JST"
    def utcoffset(self, dt):
        return datetime.timedelta(hours=9)
    def dst(self, dt):
        return datetime.timedelta(0)

print datetime.datetime.now(JapanTZ())

実装したメソッドは, tzname, utcoffset, dst の三つです. メソッドを呼び出す度にインスタンスを生成していますが,お気になさらぬよう.

最後の一行は,日本時間で現在時刻を表示します.

2010-01-18 23:14:24.841000+09:00

今ひとつ,あか抜けない表示ですが,まあ,いいでしょう. 表示方法を工夫したいときは, "datetime.strfdate" をご参照ください.

>>> print datetime.datetime.now(JapanTZ()).strftime("%Y-%m-%d %H:%M:%S %Z")
2010-01-18 23:34:27 JST

参考サイト

9.1. datetime — Basic date and time types
"datetime" モジュールのマニュアルです. よく読んで理解した結果,自分でクラスを作成する必要があることがわかりました.
World timezone definitions, modern and historical
2009年より以前の世界各国の "tzinof" 情報を詰め合わせたモジュールです. ただし,インストールが必要なので, Python に手を加えることができない,レンタルサーバなどで使用することはできません. そんな時は,自分で作るか,あきらめて UTC を使いましょう.

参考文献

ウサギ本には, "dateutil" というパッケージが紹介されていますが,これもインストールしなきゃ使えないみたいです. そもそも, Time Zone の話が少なすぎます.

Python クックブック 第2版

Python クックブック 第2版

  • 作者: Alex Martelli
  • 出版社/メーカー: オライリー・ジャパン
  • 発売日: 2007/06/26
  • メディア: 大型本
Python Cookbook

Python Cookbook

  • 作者:
  • 出版社/メーカー: Oreilly & Associates Inc
  • 発売日: 2005/05/05
  • メディア: ペーパーバック

nice!(0)  コメント(0)  トラックバック(0)  このエントリーを含むはてなブックマーク#

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0

トラックバックの受付は締め切りました

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。