ブラウザ、サーバーに依存せず、また、JSTが選択できないPCの場合、日本時間で固定して取得します。
目次
日本時間(JST)でDateを取得する
JSTが選択できないPCの場合、timeZoneを指定してもUTCで返ってきます。
そこで、getTimezoneOffset
を利用して取得します。
これは現在のロケールからUTC(協定世界時)までのタイムゾーンの差を分単位で返します。
Date.prototype.getTimezoneOffset() – JavaScript | MDN
getTimezoneOffset() メソッドは、(ホストシステム上における)現在のロケールから協定世界時 (UTC) までのタイムゾーンの差を分単位で返します。
例えば日本時間なら9時間進んでいるので 9*60(540)分進んでいるので-540が返ってきます。
UTCでは0を返します。
この差を利用して、以下のようにして、日本時間を取得します。
new Date(Date.now() + ((new Date().getTimezoneOffset() + (540)) * 60 * 1000));
日本時間の時に-540が返ってくるので、そのままnew Date()
をして日本時間を取得。
UTCの時に0が返ってくるので540分遅れているとして追加してあげることで日本時間を取得しています。