🐡

Prismaタイムゾーン

2024/07/05に公開

https://github.com/prisma/prisma/issues/5051
https://zenn.dev/gibjapan/articles/04dd5afde1ca79

Prismaの動作

  • Prismaを使用してデータを保存する際、日時データは自動的にUTCとして保存されます。
  • システムやデータベースのタイムゾーン設定(例:JST)が考慮されないため、UTC時間でデータがデータベースに保存されます。

データベースの確認

  • データベースを直接確認すると、日時データはUTC時間で保存されています。
  • 例:2020年6月20日13:00 JSTで保存したい場合、データベースには2020-06-20 04:00:00 UTCとして保存されます。

クライアント側での変換

  • データを取得する際、クライアント側でUTC時間をJSTなどのローカルタイムゾーンに変換する必要があります。
  • これにより、ユーザーに正しいローカル時間を表示できます。

ミドルウェアで日時を調整する
具体的には、Prismaは保存するときにUTCに変換し、取得するときはUTCとして解釈します。JSTとして保存するためには、登録するときに+9hし、取得するときに-9hすればよいです。

このように、Prismaを使用する場合、データベースにはUTC時間が保存されるため、クライアント側で適切なタイムゾーンに変換する処理を追加することが重要です。

もしくはデータベース では utc で保存するというのが無難かもしれません。

Discussion