JavaScript の Date で UNIX 時間を取得

JavaScript の Date クラスには、UNIX 時間を返すメソッドがいくつか用意されています。

UNIX 時間とは?

UNIX 時間というのは、協定世界時 (UTC) の 1970年1月1日午前0時0分0秒からの経過時間を秒数で表したものです。

「UNIX 時間」(UNIX time) という呼び名の他、次のような呼び方がありますが、どれも同じことです。

  • UNIX 時刻 (UNIX time)
  • POSIX 時間 (POSIX time)
  • UNIX エポック時間 (UNIX Epoch time)
  • エポック時間 (Epoch time)

JavaScript では UNIX 時間はミリ秒で表されます。

Date.now() 現在時刻の UNIX 時間を取得

Date クラスのスタティックメソッド Date.now() は、現在時刻の UNIX 時間をミリ秒単位で返します。

Date.UTC() 渡した時間を UTC 時刻として UNIX 時間を取得

Date.UTC(year, month, day, hour, minute, second) は、引数として渡した時刻を UTC 時間とみなして、その時刻の UNIX 時間をミリ秒単位で返します。

引数の year は必須の引数で、その他は任意です。

ECMAScript 2016 以前では month も必須の引数でした。

month は 0 ベースで月を指定します。 0 は 1月、1は2月、という風に指定することに注意が必要です。

次の例では 2020年3月1日を表す Date.UTC(2020, 2, 1) を使って UTC 時間の 2020年3月1日の UNIX 時間を取得し、 Date オブジェクトを作成しています。

let d = new Date(Date.UTC(2020, 2, 1))

console.log(d.toString())
// Sat Feb 29 2020 16:00:00 GMT-0800 (Pacific Standard Time)
console.log(d.toUTCString())
// Sun, 01 Mar 2020 00:00:00 GMT

toString() はローカル時間を表す文字列を返し、 toUTCString() は UTC 時間を表す文字列を返します。 toUTCString() は確かに 2020年3月1日を示しています。

Date.parse() 渡した日付文字列を解析して UNIX 時間を取得

Date.parse(s) は引数で渡した文字列 s の内容を解析して、結果の時刻の UNIX 時間をミリ秒単位で返します。

MDN によれば ISO 8601 形式で文字列を渡す以外は実装により動作が変わる可能性があるので、なるべく利用しない方が良いと記載されています。

let d = new Date(Date.parse('2020-03-01T00:00:00.000Z'))

console.log(d.toString())
// Sat Feb 29 2020 16:00:00 GMT-0800 (Pacific Standard Time)
console.log(d.toISOString())
// 2020-03-01T00:00:00.000Z

getTime() Date オブジェクトが表す時刻の UNIX 時間を取得

Date クラスのインスタンスメソッドである getTime() メソッドは、 その Date オブジェクトが表している時刻の UNIX 時間をミリ秒単位で返します。

let d = new Date(2020, 2, 1)
console.log(d.getTime()) 
// 1583049600000
let d2 = new Date(d.getTime())
console.log(d2.toDateString())
// Sun Mar 01 2020

ここまでお読みいただき、誠にありがとうございます。SNS 等でこの記事をシェアしていただけますと、大変励みになります。どうぞよろしくお願いします。

© 2024 JavaScript 入門