Open2

Date, DateTimeの取り扱いについて

LiamさんLiamさん

Date型 (YYYY-MM-DD)

フロントエンド

結論
渡すタイミング(APIクライアントレベル)で、UTCの0時に設定しAPIを叩く。
つまりAPIクライアントを呼び出す際に、日付け(YYYY-MM-DD)を保証できれば正常に動く。

理由
タイムゾーンによって日付がずれるのを防ぐため。
1月2日という情報が欲しい場合、1月2日の0時のDateを作成する → デバイスのタイムゾーンがJSTだった場合、DBはUTCで時間を管理しているため、-9時間の差が生じて、1月1日の15時になって1日のずれが生じてしまう。

バックエンド

受け取ったDateをタイムゾーンを考慮することなく扱える

LiamさんLiamさん

DateTime型

結論
ユーザーのタイムゾーンに応じた時間を扱えば良い。どこのタイムゾーンであっても、UTCに変換してDBに保存する。
ユーザーに返却してユーザーのタイムゾーンに合わせて変換する。

  1. APIにDate(2022年1月1日10時30分 JST)をPOSTする(JSであれば、Date型はISO Stringに変換される)
  2. DBに(2022年1月1日1時30分 UTC)で保存される
  3. レスポンスを返す(2022年1月1日1時30分 UTC)
  4. タイムゾーンによって変換される、日本の場合(2022年1月1日10時30分 JST)