【JavaScript授業十日目】組み込みオブジェクト(続き2)
組み込みオブジェクト(続き2)
console.log(Date.now());
・オリジナルオブジェクトのメソッドを呼び出すこともできる
・オリジナルオブジェクトで動くものを静的メソッドという
●インスタンス日時の変更例
var date2 = new Date(2018, 0, 1, 12, 0);
console.log(date2.toLocaleString());//変更前コンソール表示
date2.setFullYear(2010, 11, 24);//2010年12月24日に変更
date2.setHours(23, 59);//23時59分に変更
console.log(date2.toLocaleString());//変更後コンソール表示
●違うパターン
console.log(date2.setFullYear(2010, 11, 24) + date2.setHours(23, 59));
console.log(date2);
・setFullYearメソッドは年だけでなく必要であれば月と日も同時に変更できる
・setHoursメソッドを使うと時だけでなく必要であれば分や秒も変更できる
・戻り値のタイムスタンプは変更後2回分のタイムスタンプが足されているので正しいタイムスタンプになっていない
●タイムスタンプ表示
console.log(date1.getTime()); ←1514775600000
●年を指定せず、実行時の年を指定したい場合
var today = new Date(); ←なにも実行しなければ今の日付
birth.setFullYear(today.getFullYear()); ←これで実行時の年になる
console.log(
"私の今年の誕生日は"
+ dayList[birth.getDay()]
+ "曜日です"
);
●スタック処理(今回のDateはこれ)
・イメージは溝に入る
・「set」が先に入って、実行できなかったので後回しにし、その上に「get」が入ってきて実行されて、その後に「set」が実行される
●キュー処理
・ビリアードで当たって押し出されるイメージ
・メールなどの処理はこれ
※イメージ↓
console.log(date1.toString());
console.log(date1.toLocaleString());
・アドレスを管理している変数をコンソールにログとして出力しようとすると勝手にtoStringメソッドが呼び出されて文字列に変換されている
・toStringメソッドはすべてのオブジェクトに実装されているメソッド
・文字列型に型変換するときに使用されるメソッド(簡易表示用)
●処理の流れ
var date1 = new Date(2018, 6, 15);
console.log(date1.toLocaleDateString());
翌月になるようDateインスタンスに変更
date1.setMonth(date1.getMonth() + 1);
スタック処理
1:date1.setMonthメソッドを実行しようとするが
引数が確定していないので保留
2:引数を確定させるために加算をしたいが左辺の値が
確定していないので保留
3:date1.getMonthメソッド()を実行して戻り値「6」を得る
4:保留になっていた加算の左辺が確定して
「6+1」の加算が実行され「7」になる
5:保留になっていたdate1.setMonthメソッドの引数を「7」で実行する
date1.setMonth(7)
結果、7月から8月に変更される
●最終日を取得するとき
var date2 = new Date('2020/2/20');
console.log(date2.toLocaleDateString());
date2.setMonth(date2.getMonth() + 1);
翌月に変更:8月から9月に変更
console.log(date2.toLocaleDateString());
date2.setDate(0);
前月最終日に変更:8月最終日つまり31日に変更
console.log(date2.getDate());
・日付は「0」にすると前の月の最終日になる
●optionでブラウザ表示
var code = (date2.getMonth() + 1) + '月から選択:';
「date2.getMonth()+1」経過月+1で月に変換して文字列作成
例)経過月「7」の場合は「8月から選択:」
code += '<select name="date">\n';
for (var i = 1; i <= date2.getDate(); i++) {
var i = 1; i <= 31; i++ 今回だと31回処理
}
code += '</select>\n';
console.log(code);
document.getElementById('display1').innerHTML = code;
●来年までの日付計算
var today = new Date();
//実行時の日時「2020年8月4日」
// var today = new Date('2018/12/20 12:00:00');
var newYear = new Date(today.getFullYear() + 1, 0, 1);
//イベント当日の日時「2021年1月1日」
console.log(today.toLocaleDateString());
console.log(newYear.toLocaleDateString());
var diff = (newYear.getTime() - today.getTime());
console.log('翌年元日' + newYear.getTime());
console.log('現在日時' + today.getTime());
console.log('経過ミリ秒差分' + diff);
console.log('1日分のミリ秒' + 1000 * 60 * 60 * 24);
diff = diff / (1000 * 60 * 60 * 24)
console.log('日付差分' + diff);
diff = Math.ceil(diff);
console.log('日付差分切り上げ' + diff);
document.getElementById('display1').innerHTML
= '来年まであと' + diff + '日';