1. ホーム
  2. ジャバスクリプト

[解決済み】UTCエポックをローカル日付に変換する

2022-04-15 10:51:14

質問

ちょっと前から格闘しています。私はepochを日付オブジェクトに変換しようとしています。エポックはUTCで送られてきます。を渡すたびに new Date() を指定すると、ローカルエポックとみなされます。UTCオブジェクトを作成し、その上で setTime() を使用して適切なエポックに調整することができますが、有用と思われる唯一の方法は toUTCString() と文字列ではどうにもならない。その文字列を新しい日付に渡すと、UTCであることに気づくはずなのですが、そうではありません。

new Date( new Date().toUTCString() ).toLocaleString()

次に試したのは、ローカルのカレントエポックとUTCのカレントエポックの差を取得しようとしましたが、これも取得できませんでした。

new Date( new Date().toUTCString() ).getTime() - new Date().getTime()

1000以下のごくわずかな差しか表示されませんが、これはミリ秒単位です。

何かご意見はありますか?

解決方法は?

最初の日付をエポックに設定し、UTC単位を追加することです。例えば、UTCのエポック変数を秒単位で保存しておくとします。どうでしょう 1234567890 . それをローカルタイムゾーンでの適切な日付に変換するには。

var utcSeconds = 1234567890;
var d = new Date(0); // The 0 there is the key, which sets the date to the epoch
d.setUTCSeconds(utcSeconds);

d は、現在、(私のタイムゾーンでの)日付が設定されています。 Fri Feb 13 2009 18:31:30 GMT-0500 (EST)