Dateオブジェクト
年月日や時刻を扱うためのオブジェクトです。現在の年月日と時刻を取得する方法です。
Dateで扱う月は0から始まります。
1月が0月、になります。気を付けてください。
var dt = new Date();
console.log(dt);//Fri Apr 29 2022 10:11:03 GMT+0900 (日本標準時)
今以外の現在の年月日と時刻を指定する方法です。
var dt1 = new Date("2019/10/19");
console.log(dt1);//Sat Oct 19 2019 00:00:00 GMT+0900 (日本標準時)
var dt2 = new Date(2019,10,19);
console.log(dt2);//Tue Nov 19 2019 00:00:00 GMT+0900 (日本標準時)
var dt3 = new Date(2019,10,19,13,30,45);
console.log(dt3);//Tue Nov 19 2019 13:30:45 GMT+0900 (日本標準時)
Dateオブジェクトの引き算はどうなるでしょうか?
var dt2 = new Date(2019,10,19);
console.log(dt2);
var dt3 = new Date(2019,10,19,00,00,01);
var dif = dt3 - dt2;
console.log(dif);//1000
console.log(typeof(dif));//number
1000?
期待していた時刻表示になっていません。Dateは1970年1月1日0時0分0秒を起点とした
ミリ秒の経過時間となっています。それなので引き算した結果の1秒は1000ミリ秒です。
つまりDateの引き算はミリ秒の経過時間となります。足し算はどうなるでしょうか?
var dt2 = new Date(2019,10,19);
console.log(dt2);
var dt3 = new Date(2019,10,19,00,00,01);
var dif = dt3 + dt2;
console.log(dif);//Tue Nov 19 2019 00:00:01 GMT+0900 (日本標準時)Tue Nov 19 2019 00:00:00 GMT+0900 (日本標準時)
console.log(typeof(dif));//string
引き算と結果が違います。文字列として処理されています。日付の足し算はありえないですよね。
次に例えば30日後はいつ?
Dateオブジェクトは他の言語に比べてちょっと貧弱です。何かやるには自力でやります。
サンプルコードです。
function calcDate(date, days){
var ms = date.getTime() + days * 1000 * 60 * 60 * 24;
date.setTime(ms);
return date;
}
var date = new Date(2022,0,1,00,00,00);
var nextDay = calcDate(date, -1);
console.log(nextDay);//Fri Dec 31 2021 00:00:00 GMT+0900 (日本標準時)
関数calcDateはdateで指定した日時にdayで指定した日にちを加算した
日時を処理します。
次に2つの年月日の間隔をdd日hh時間mm分ss秒で取得する関数です。
function dateSpan(date1, date2){
var span = Math.abs(date1.getTime() - date2.getTime());
span /= 1000;//to second
var s = span % 60;
span -= s;
span /= 60;
var m = span % 60;
span -= m;
span /= 60;
var h = span % 24;
span -= h;
span /= 24;
var dd = span;
var str = "";
if(dd > 0){
str += ("" + dd + "日");
str += ("" + h + "時間");
str += ("" + m + "分");
str += ("" + s + "秒");
}
else{
str += ("" + h + "時間");
str += ("" + m + "分");
str += ("" + s + "秒");
}
return str;
}
var date1 = new Date(2019,1,1,00,00,00);
var data2 = new Date(2019,1,5,23,59,05);
console.log(dateSpan(date1, data2));//4日23時間59分5秒
2つのサンプルコードを示しましたが、Dateオブジェクトで大事なメソッドは、
getTime()
setTime()
です。
メソッド
日付の取得
| メソッド |
説明 |
| getFullYear() |
年の値を返す |
| getMonth() |
月の値を返す |
| getDate() |
日の値を返す |
| getDay() |
曜日(日曜:0 土曜:6)の値を返す |
| getHours() |
時を返す |
| getMinutes() |
分を返す |
| getSeconds() |
秒を返す |
| getMilliseconds() |
ミリ秒を返す |
| getTime() |
1970年1月1日0時0分0秒を起点とした
ミリ秒の経過時間を返す |
| getTimezoneOffset() |
世界時との誤差を分単位で返す |
日付の設定
| メソッド |
説明 |
| setFullYear() |
年の値を設定する |
| setMonth() |
月の値を設定する |
| setDate() |
日の値を設定する |
| setHours() |
時を設定する |
| setMinutes() |
分を設定する |
| setSeconds() |
秒を設定する |
| setMilliseconds() |
ミリ秒を設定する |
| setTime() |
1970年1月1日0時0分0秒を起点とした
ミリ秒の経過時間を設定する |
日付の取得(UTC)
| メソッド |
説明 |
| getUTCFullYear() |
年の値を返す |
| getUTCMonth() |
月の値を返す |
| getUTCDate() |
日の値を返す |
| getUTCDay() |
曜日(日曜:0 土曜:6)の値を返す |
| getUTCHours() |
時を返す |
| getUTCMinutes() |
分を返す |
| getUTCSeconds() |
秒を返す |
| getUTCMilliseconds() |
ミリ秒を返す |
日付の設定(UTC)
| メソッド |
説明 |
| setUTCFullYear() |
年の値を設定する |
| setUTCMonth() |
月の値を設定する |
| setUTCDate() |
日の値を設定する |
| setUTCHours() |
時を設定する |
| setUTCMinutes() |
分を設定する |
| setUTCSeconds() |
秒を設定する |
| setUTCMilliseconds() |
ミリ秒を設定する |
文字列への変換
| メソッド |
説明 |
| toGMTString() |
GMT(グリニッジ標準時)へ変換する |
| toUTCString() |
UTC(協定世界時)へ変換する |
| toLocaleString() |
現地時刻を使用して変換する |
| toDateString() |
日付を文字列として返す |
| toTimeString() |
時刻を文字列として返す |
| toLocaleDateString() |
現地時刻に対応した日付を返す |
| toLocaleTimeString() |
現地時刻に対応した時刻を返す |
| toString() |
日時の文字列を返す |
日付データの解析
| メソッド |
説明 |
| now() |
現在と1970年1月1日0時0分0秒を起点とした
ミリ秒の経過時間を取得する
|
| parse(string) |
時刻を表す文字列から1970年1月1日0時0分0秒を起点とした
ミリ秒の経過時間を取得する |
| UTC(yy,mm,dd(,h,m,s)) |
UTCで指定した時刻から1970年1月1日0時0分0秒を起点とした
ミリ秒の経過時間を取得する |
その他
| メソッド |
説明 |
| valueOf() |
getTime()と同じ値を返す
|
|