国際化ウェブアプリの時間の取り扱いの履歴
国際化アプリケーションを作る際に、どのように時間を扱えばよいのか考えてみた。
各レイヤの時間
- データベース: データベースの日付はUTCを使う。データベースの日付は大抵の場合、時差情報を持っているので注意!(MySQLなら SET time_zone = '+00:00' みたいに時差を予め合わせてやる。日本にあるサーバーは+09:00になっていることが多い。ヒント:/etc/localtime サーバーを外国に引っ越したり、国を跨いでデータベースに接続したり(!)する時にはデフォルトタイムゾーンが違ったりするので注意!)
- (M/C)モデル/コントローラ: unixtimeを使う。unixtimeは常にUTCの1970年1月1日からの秒数を返すので時差とか関係ない。
- (V)ユーザーの環境に合わせて表示してやる。
ひょっとしたら基本的なことなのかもしれないけどメモ書きしておきます。