LoginSignup
3
1

More than 1 year has passed since last update.

【Javascript】時間の取り扱い(Timestamp ⇄ Dateオブジェクト)

Last updated at Posted at 2022-05-24

Dateオブジェクト作成

まずはDateオブジェクトの作成から。

現在時刻で作成

new Date();

年月日時分秒の値を渡して作成

console.log(new Date(2015));
// Thu Jan 01 1970 09:00:02 GMT+0900

console.log(new Date(2015, 0));
// Thu Jan 01 2015 00:00:00 GMT+0900

console.log(new Date(2015, 15));
// Fri Apr 01 2016 00:00:00 GMT+0900

console.log(new Date(2015, 0, 20));
// Tue Jan 20 2015 00:00:00 GMT+0900

console.log(new Date(2015, 0, 40));
// Mon Feb 09 2015 00:00:00 GMT+0900

console.log(new Date(2015, 0, 20, 14));
// Tue Jan 20 2015 14:00:00 GMT+0900

console.log(new Date(2015, 0, 20, 25));
// Wed Jan 21 2015 01:00:00 GMT+0900

console.log(new Date(2015, 0, 20, 9, 30));
// Tue Jan 20 2015 09:30:00 GMT+0900

console.log(new Date(2015, 0, 20, 9, 75));
// Tue Jan 20 2015 10:15:00 GMT+0900

console.log(new Date(2015, 0, 20, 9, 30, 45));
// Tue Jan 20 2015 09:30:45 GMT+0900

console.log(new Date(2015, 0, 20, 9, 30, 85));
// Tue Jan 20 2015 09:31:25 GMT+0900

console.log(new Date(2015, 0, 20, 9, 30, -30));
// Tue Jan 20 2015 09:31:25 GMT+0900

文字列を渡して作成

<input type="date"><input type="time"> で選択した値を元にDateオブジェクトを作成するときに使用。

console.log(new Date('2000-04-01T18:39:00'));
// Sat Apr 01 2000 18:39:00 GMT+0900 (日本標準時)

console.log(new Date('2000-04-01'));
// Sat Apr 01 2000 09:00:00 GMT+0900 (日本標準時)

console.log(new Date('2000-04-01 10:00'));
// Sat Apr 01 2000 10:00:00 GMT+0900 (日本標準時)

console.log(new Date('2000-04-01 05:43:21'));
// Sat Apr 01 2000 05:43:21 GMT+0900 (日本標準時)

console.log(new Date('2000/05/01 06:20:00'));
// Mon May 01 2000 06:20:00 GMT+0900 (日本標準時)

console.log(new Date('July 1, 2000 07:15:30'));
// Sat Jul 01 2000 07:15:30 GMT+0900 (日本標準時)

console.log(new Date('8 3, 1995 08:05:20'));
// Thu Aug 03 1995 08:05:20 GMT+0900 (日本標準時)

console.log(new Date('09 08, 1994 09:00:00'));
// Thu Sep 08 1994 09:00:00 GMT+0900 (日本標準時)

変換(Timestamp ⇄ Dateオブジェクト)

Timestampとは

  • 「1970年1月1日午前0時0分0秒(UTC)」からの経過秒数で表現したもの
  • 「1970年1月1日午前0時0分1秒」だったら「1」のように、UTCで「1970年1月1日午前0時0分0秒」を基準にして、そこからの経過秒数で日時を表現するやり方

UTCとは

  • Coordinated Universal Time
  • 日本時間から9時間引いた時間(協定世界時)
  • UTCに9時間足したのが日本時間

UnixTime → Dateオブジェクト

「1567566215」のような数字から、「2022/01/01」の形に変換。
UnixTimeは秒単位であり、Dateオブジェクトに変換するにはミリ秒になおす必要があるため、 timestamp * 1000 が必要。

//UnixTimestamp = 1648758600 で検証
let date = new Date(timestamp * 1000);

console.log(date.getFullYear());                     //2022
console.log(date.toLocaleDateString().slice(5));     //4/1
console.log(date.toLocaleTimeString().slice(0, -3)); //5:30

Dateオブジェクト → UnixTime

2022/01/01のような形から、「1567566215」の形に変換。
Dateオブジェクトはミリ秒単位であり、UnixTimeに変換するには秒単位になおす必要があるため、 timestamp / 1000 が必要。

let date = new Date();
let timestamp = Math.floor( date.getTime() / 1000 );

console.log(timestamp); //1651585200

参考

3
1
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1