TypeORMのタイムゾーンをUTCに設定する
- 2021.02.16
- TypeScript
結論
ormconfig.jsに以下を追記する
timezone: "Z",
GitHubに上がっている公式のドキュメントに記載の通り、デフォルトは”local”になっており、ユーザのローカルのタイムゾーンが使われる。ちなみに、Zは「グリニッジ標準時<GMT>」を意味する略語。
timezone
– the timezone configured on the MySQL server. This is used to typecast server date/time values to JavaScript Date object and vice versa. This can belocal
,Z
, or an offset in the form+HH:MM
or-HH:MM
. (Default:local
)
なぜこの対応をする必要があったのか?
データの保存先であるMySQLではタイムゾーンをUTCにしていた。この時、created_atカラムを持つテーブルのレコードを生成すると、MySQLのタイムゾーンの設定によって、日本時間よりも9時間前の時刻がcreated_atに登録される。
このレコードを、デフォルトの設定(タイムゾーンがJST)のTypeORMで取得しにいくと、更に9時間が減算され(UTCで出力しようとするため)、間違った時刻(実際よりも9時間前の時刻)になってしまう。アプリとDBでタイムゾーンに違いがあると、このような問題が起きそう。
-
前の記事
docker-composeでコンテナを起動させ続ける 2021.02.15
-
次の記事
AmplifyでデプロイしたECSのコンテナで環境変数を使用する 2021.02.16