我須要在JavaScript中將日期值增長一天。 javascript
例如,個人日期值爲2010-09-11,我須要將次日的日期存儲在JavaScript變量中。 html
如何將日期增長一天? java
不能徹底肯定它是否爲BUG(已測試Firefox 32.0.3和Chrome 38.0.2125.101),可是如下代碼在巴西(-3 GMT)上將失敗: git
Date.prototype.shiftDays = function(days){ days = parseInt(days, 10); this.setDate(this.getDate() + days); return this; } $date = new Date(2014, 9, 16,0,1,1); $date.shiftDays(1); console.log($date+""); $date.shiftDays(1); console.log($date+""); $date.shiftDays(1); console.log($date+""); $date.shiftDays(1); console.log($date+"");
結果: github
Fri Oct 17 2014 00:01:01 GMT-0300 Sat Oct 18 2014 00:01:01 GMT-0300 Sat Oct 18 2014 23:01:01 GMT-0300 Sun Oct 19 2014 23:01:01 GMT-0200
在日期上增長一個小時,將使其工做完美(但不能解決問題)。 ide
$date = new Date(2014, 9, 16,0,1,1);
結果: 測試
Fri Oct 17 2014 01:01:01 GMT-0300 Sat Oct 18 2014 01:01:01 GMT-0300 Sun Oct 19 2014 01:01:01 GMT-0200 Mon Oct 20 2014 01:01:01 GMT-0200
最簡單的方法是轉換爲毫秒並添加1000 * 60 * 60 * 24毫秒,例如: this
var tomorrow = new Date(today.getTime()+1000*60*60*24);
接下來的5天: spa
var date = new Date(), d = date.getDate(), m = date.getMonth(), y = date.getFullYear(); for(i=0; i < 5; i++){ var curdate = new Date(y, m, d+i) console.log(curdate) }
使用dateObj.toJSON()方法獲取日期的字符串值參考: https : //developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toJSON從返回的結果中切片日期值,而後增長所需的天數。 prototype
var currentdate = new Date(); currentdate.setDate(currentdate.getDate() + 1); var tomorrow = currentdate.toJSON().slice(0,10);
爲您提供三種選擇:
Date
對象(不使用庫): 我先前對#1的回答是錯誤的(它增長了24小時,未能考慮到夏時制的轉換; Clever Human指出,東部時區到2010年11月7日將失敗)。 相反, Jigar的答案是在沒有庫的狀況下執行此操做的正確方法:
var tomorrow = new Date(); tomorrow.setDate(tomorrow.getDate() + 1);
這甚至在一個月(或一年)的最後一天均可以使用,由於JavaScript日期對象對過渡很聰明:
var lastDayOf2015 = new Date(2015, 11, 31); snippet.log("Last day of 2015: " + lastDayOf2015.toISOString()); var nextDay = new Date(+lastDayOf2015); var dateValue = nextDay.getDate() + 1; snippet.log("Setting the 'date' part to " + dateValue); nextDay.setDate(dateValue); snippet.log("Resulting date: " + nextDay.toISOString());
<!-- Script provides the `snippet` object, see http://meta.stackexchange.com/a/242144/134069 --> <script src="//tjcrowder.github.io/simple-snippets-console/snippet.js"></script>
(此答案目前已被接受,所以我沒法刪除。在被接受以前,我向OP建議他們接受Jigar的答案,但也許他們接受列表中第2或#3項的答案。)
var today = moment(); var tomorrow = moment(today).add(1, 'days');
(請注意, add
會修改您調用的實例,而不是返回新實例,所以today.add(1, 'days')
會在today
修改。這就是爲何咱們從var tomorrow = ...
上克隆op的緣由。 )
var today = new Date(); // Or Date.today() var tomorrow = today.add(1).day();