JavaScript,获取第二天的日期

我有以下的脚本,第二天返回:

function today(i)
{
var today = new Date();
var dd = today.getDate()+1;
var mm = today.getMonth()+1;
var yyyy = today.getFullYear();


today = dd+'/'+mm+'/'+yyyy;


return today;
}

使用以下方法:

today.getDate()+1;

我得到的是每个月的第二天(例如今天会得到16)。

我的问题是,这可能是在本月的最后一天,因此最终返回 2014年4月32日

有什么办法可以保证我第二天的日期是正确的吗?

256932 次浏览

你可使用:

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

例如,由于4月份有30天,下面的代码将输出5月1日:

var day = new Date('Apr 30, 2000');
console.log(day); // Apr 30 2000


var nextDay = new Date(day);
nextDay.setDate(day.getDate() + 1);
console.log(nextDay); // May 01 2000

参见 小提琴

使用 Date 对象可以保证这一点。例如,如果您尝试创建 April 31st:

new Date(2014,3,31)        // Thu May 01 2014 00:00:00

请注意,它是零索引,所以一月是 0,二月是 1等。

从这里复制粘贴: 在 JavaScript 中递增日期

你有三个选择:

仅使用 JavaScript 的 Date 对象(不使用库) :

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

一句俏皮话

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

或者,如果你不介意在适当的地方更改日期(而不是创建

新日期) :

var dt = new Date();
dt.setTime(dt.getTime() + (24 * 60 * 60 * 1000));

编辑: 另见 Jigar 的回答和 David 的评论如下: var tomorrow = new Date () ; tomorrow.setDate (tomorrow.getDate () + 1) ;

使用 MomentJS:

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

(注意,add 会修改调用它的实例,而不是 返回一个新的实例,因此 today.add (1,‘ days’)将在今天进行修改。 这就是为什么我们明天开始在 var 上进行克隆操作

使用 DateJS,但它已经很久没有更新了:

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