Dateオブジェクトの演算

var now = new Date("2012");
var old = new Date("2011");
now + old; // Sun Jan 01 2012 09:00:00 GMT+0900Sat Jan 01 2011 09:00:00 GMT+0900
now - old; // 31536000000
now + 999; // Sun Jan 01 2012 09:00:00 GMT+0900999
now - 999; // 1325375999001
999 + now; // 999Sun Jan 01 2012 09:00:00 GMT+0900
999 - now; // -1325375999001
暗黙の型変換が行われるわけだが、+演算子だと文字列演算、それ以外だと算術演算。
ようするに、こんな事するなということか。

月の最初の日と最後の日

最後の日は次の月の0日を指定すると簡単に取得できる。
var firstDate = new Date(year, month - 1, 1);
var lastDate  = new Date(year, month, 0);

現在時刻から「最後の○曜日」を計算する

曜日はDateインスタンスのgetDayメソッドで取得できる
0 : 日曜    1 : 月曜    2 : 火曜    3 : 水曜
4 : 木曜    5 : 金曜    6 : 土曜
一日の長さをミリ秒で表すと
86400000
最後の水曜日なら
const WEDNESDAY = 3;
var now = new Date();
var diff = now.getDay() - WEDNESDAY;
if (diff < 0) {
    diff += 7;
}
//var lastWed = new Date(now.getTime() - diff*86400000); 
var lastWed = now.setDate(now.getDate() - diff); 

タグ:

+ タグ編集
  • タグ:
最終更新:2015年06月18日 06:19