JavaScript:將指定日期加上 X 天
17 May 2017撰寫一個addDays
method,可將指定日期加上 X 天,得到一個延後的日期。
方法 1
- 將指定的時間物件轉為數字 (ms) ,然後還原成時間物件 (1)。
- 將 (1) 得到的時間物件取日期並加上指定天數 (days),然後重新設定延後的日期 (2)。
Date.prototype.addDays = function(days) {
var dat = new Date(this.valueOf()); // (1)
dat.setDate(dat.getDate() + days); // (2)
return dat
}
這個方法似乎有些囉嗦,畢竟一開始取得的 this 就是時間物件,不需要將時間還原成 ms 後再轉回時間物件,然後再做後面取日期、加天數的處理。
方法 2
改進方法 1,由於「this」即是指定的時間物件(如下 Demo 範例是 today),因此就使用 this 取得「日」再加 7 天,最後將這個更新後的日期設定給這個時間物件即可。
Date.prototype.addDays = function(days) {
this.setDate(this.getDate() + days);
return this;
}
Demo
取得今天後 7 日的時間。
var today = new Date();
today // Wed May 17 2017 12:16:50 GMT+0800 (台北標準時間)
today.addDays(7) // Wed May 24 2017 12:16:50 GMT+0800 (台北標準時間)