2009年6月12日 2:35 AM by Abalone
昨日datetimeクラスを使ってみた。
簡単に日時を扱えそうというのは分かったので、次はタイムゾーンを使ってみる。
タイムゾーンをdatetimeオブジェクトで使うためには、まず、datetimeモジュールのサブクラス、tzinfoクラスを継承したクラスを自分で作成し、必要なメソッドを実装する。
class GMT(datetime.tzinfo): def utcoffset(self,dt): return datetime.timedelta(hours=0) def dst(self,dt): return datetime.timedelta(0) def tzname(self,dt): return "GMT"
これを、datetimeオブジェクトのコンストラクタに渡すと、そのタイムゾーンでdeltatimeオブジェクトが生成される。
dt = datetime.datetime(2009,06,12,1,34,45,0,GMT()) print dt
この実行結果は、
2009-06-12 01:34:45+00:00
こんな風になる。tzinfoにGMTオブジェクトを渡したので、GMT時間として扱われている。さらにJSTクラスを定義してみる。
class JST(datetime.tzinfo): def utcoffset(self,dt): return datetime.timedelta(hours=9) def dst(self,dt): return datetime.timedelta(0) def tzname(self,dt): return "JST"
このJSTクラスを使って、上のやつと同じことをしてみると、次のようになる。
dt = datetime.datetime(2009,06,12,1,34,45,0,JST()) print dt
この実行結果は以下。
2009-06-12 01:34:45+09:00
日本時間として扱われている。これを、datetimeクラスのastimezone()メソッドで、GMT時間に変換したdatetimeオブジェクトを生成してみる。
dt2 = dt.astimezone(GMT()) print dt2
この実行結果は、以下の通り。
2009-06-11 16:34:45+00:00
日付の変更も含めて、GMT時間に変更されている。
こんな感じでdatetimeオブジェクトを使ってタイムゾーンを扱うことができる。
トラックバックURL
この記事に対するコメント/トラックバックはまだありません
コメントをどうぞ