実行環境に左右されないJST日時の取得方法

2023/01/03

javascriptの日時取得メソッド(new Date)は実行環境によって取得できる日時のタイムゾーンが異なる。AWS Amplifyの東京リージョンだとJSTが取得できるっぽいが、VercelだとUTCになってしまう模様。

対処方法を調べていたところ実行環境に左右されずにJSTを取得する方法があった。

new Date(Date.now() + ((new Date().getTimezoneOffset() + (9 * 60)) * 60 * 1000));

getTimezoneOffsetはUTCからのずれ(min)を返すメソッド。

  • 実行環境のタイムゾーンがUTCの場合 new Date().getTimezoneOffset()が0となり、全体の式がnew Date(実行環境におけるunixtime + 540 * 60 * 1000)となって、JSTが取得できる

  • 実行環境のタイムゾーンがJSTの場合 new Date().getTimezoneOffset()が-540となり、全体の式がnew Date(実行環境におけるunixtime + 0)となって、JSTが取得できる

この方法を知る前はnew Dateメソッド内の引数を環境変数で制御する方法をイメージしていたが、こんな方法があったとは...これだと環境変数自体が不要になる。素晴らしい!

参考:JavaScriptで実行環境に左右されず常に JST 日本時間を取得する(Neo's World)

最新の投稿.