新BBSログのタイムゾーン対応
Pythonの時刻周り訳分からんと文句を言いつつタイムゾーン対応を試みた。 具体的には
- ログの日時にタイムゾーンを記録
- 表示するアカウントの設定にあるタイムゾーンで表示
を行う。
まず、古い形式
when: 2011/08/10 23:00:00
の時刻をparseしてdatetimeオブジェクトに変換し、それをunixtimeに変換してself.request.user.getFormattedDateTimeに渡すように実装した。 なぜかJSTからUTCに変換したつもりが9時間早くなると思いながら二時間経過して、ふと気づくとテスト用のwikiにタイムゾーンが設定されてない。Oh...そりゃ9時間早く表示されるわけだ。
で、いざ新形式、と新しい書式に書き換えてみた。
when: 2011-08-10 23:00:00 +09:00
すると、何故か型エラーが発生。何故か文字列ではなく最初からdatetime型になっている。 もしやと思い単体でPyYAMLに解釈させてみると綺麗にdatetime型が返ってきた。 調べてみるとYAML自体にtimestamp型がある。 流石YAMLである。 自分でパースしてタイムゾーンを調整していたのは完全に無駄骨だったわけだ。