在JavaScript中增長日期

我須要在JavaScript中將日期值增長一天。 javascript

例如,個人日期值爲2010-09-11,我須要將次日的日期存儲在JavaScript變量中。 html

如何將日期增長一天? java


#1樓

不能徹底肯定它是否爲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

#2樓

最簡單的方法是轉換爲毫秒並添加1000 * 60 * 60 * 24毫秒,例如: this

var tomorrow = new Date(today.getTime()+1000*60*60*24);

#3樓

接下來的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)
}

#4樓

使用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);

#5樓

爲您提供三種選擇:

1.僅使用JavaScript的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項的答案。)

2.使用MomentJS

var today = moment();
var tomorrow = moment(today).add(1, 'days');

(請注意, add會修改您調用的實例,而不是返回新實例,所以today.add(1, 'days')會在today修改。這就是爲何咱們從var tomorrow = ...上克隆op的緣由。 )

3.使用DateJS ,可是很長一段時間沒有更新:

var today = new Date(); // Or Date.today()
var tomorrow = today.add(1).day();
相關文章
相關標籤/搜索