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()と同じ値を返す
|
|