问题

我需要在JavaScript中增加日期值一天.

例如,我有一个日期值2010-09-11,我需要将第二天的日期存储在JavaScript变量中.

如何增加日期一天?

  最佳答案

你有三个选择:

1. 只使用JavaScript的Date对象(没有库):

我之前对#1的答案是错误的(它添加了24小时,无法说明向日光保存时间的过渡; Clever Human 指出它将失败,2010年11月7日在东部时区).相反, Jigar的答案是在没有库的情况下执行此操作的正确方法:

 var tomorrow = new Date();
tomorrow.setDate(tomorrow.getDate() + 1);
 

这甚至适用于一个月(或一年)的最后一天,因为JavaScript日期对象对于rollover很聪明:

 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 = ...上的克隆操作开始.)

3. 使用 DateJS ,但它很长时间没有更新:

 var today = new Date(); // Or Date.today()
var tomorrow = today.add(1).day();
 

  相同标签的其他问题

javascriptdatedatetime