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