アプリケーションのタイムゾーンをどう扱うか?


課題

  • 利用者のほとんどが日本人なので表示は日本時間に合わせたい
  • DBやサーバーのタイムゾーンはUTCで入っている

考え方

DBにタイムゾーンオフセットをつけて保存すべきという考え方の人もいるが、
MySQLのdatetime型では入らない
そもそもタイムゾーンを考慮した時間というのは、表示側の都合であり、クライアント側が利用ユーザーの利用拠点に合わせて時間表示を切り替えてあげればいいのではないか?

結果

APIのレスポンス

タイムゾーンをUTCに統一
ISO8601の拡張版を利用
タイムゾーンオフセット付き
YYYY-MM-DD hh:mm:ss+mm:ss 

APIのリクエスト

ISO8601の拡張版を利用
タイムゾーンオフセット付き
YYYY-MM-DD hh:mm:ss+mm:ss 

DBに保存する値

タイムゾーンをUTCに統一
ISO8601
YYYY-MM-DD hh:mm:ss

参考文献