「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
が取得できます。