UTC ベースで時間データを扱う: JavaScript 版 (IoTプログラミング)


「UTC ベースで時間データを扱う(IoTプログラミング)」
https://qiita.com/nanbuwks/items/e3714f6b0b6b0b8585f4

では C で UTC を扱う記事を書きました。

今回は JavaScript でUTCを扱う方法です。

UNIX 時間 → Date オブジェクト

UNIX時間 1606323269 ( UTC 2020年11月25日 16:54:29 ) を worktime に格納しているとします。

これを JavaScript の Date スクリプトにして、更に文字列形式に変換し出力するには以下のようにします。

      worktime=1606323269;
      datetime = new Date(worktime*1000);
      stringline=(datetime.toLocaleString());
      document.write(stringline);

Dataオブジェクト内部には1970年1月1日からの時間が UTC ベースで格納されています。
UNIX 時間も1970年1月1日からの UTC ベースのカウントですが、UNIX 時間は秒単位なのに対し Date オブジェクトはミリ秒単位なので 1000 倍します。

これの出力は


2020/11/26 1:54:29

となります。日本の Timezone になって出てきましたね。

UTCとする場合には


      stringline=(datetime.toUTCString());

とし、出力は


Wed, 25 Nov 2020 16:54:29 GMT

となります。

しかしこの形式は日本でよく使われる YYYY/MM/DD hh: mm:ss 形式ではないですし、数値で月を表示して IoT で処理しやすくしたい場合もあります。

UTC でなおかつ日本形式にしたい場合は先の toLocaleString を使い、


      stringline=(datetime.toLocaleString('ja-JP', { timeZone: 'UTC' }));

とすると


2020/11/25 16:54:29

が取得できます。