ISO形式の日付データをミリ秒にしなければならないケースといえば、UNIX時間の参照や処理経過時間の計測などだろうか。UNIX時間においては、秒単位であるが、まず日付データをミリ秒に変換する工程が必要だ。それから処理経過時間の計測では、差分を算出するためミリ秒に変換することもあるだろう。
このエントリーでは、ISO 形式の日付をミリ秒に変換するソリューションについて共有したい。
ミリ秒に変換する
Date.parse()
const result = Date.parse('2021-10-13T14:00:00+0900');
console.log(result);
>> 1634101200000
Date.parse
に渡した文字列(ISO形式)に対する、1970 年 1 月 1 日 00:00:00 UTC からの経過ミリ秒で変換している。
Date.prototype.getTime()
const date = new Date('2021-10-13T14:00:00+0900');
const result = date.getTime();
console.log(result);
>> 1634101200000
getTime
による 1970 年 1 月 1 日 00:00:00 UTC からの経過ミリ秒で変換している。
数値型に変換するショートハンド
const result = +new Date('2021-10-13T14:00:00+0900');
console.log(result);
>> 1634101200000
+
記号(ショートハンド)によって Date オブジェクトを数値型に変換している。
UNIX時間に変換する
UNIX時間は、UTC時刻における1970年1月1日 00:00:00 からの経過秒数で表される。つまりミリ秒を秒に変換できれば目的が果たされる。
では、その方法を見ていこう。
上述の手段によってミリ秒を参照できているから、それを 1000 で割ればよい。
const result = Date.parse('2021-10-13T14:00:00+0900');
const unixtime = result / 1000;
console.log(unixtime);
>> 1634101200