在此Date函数中添加Days有什么问题?

时间:2013-03-19 09:31:29

标签: javascript date

这是我的代码:

var dat = new Date("24/03/2013");
dat.setDate(dat.getDate() + 7);
console.log(dat)

但它打印Tue Jan 06 2015 00:00:00 GMT+0100

日期错误:应该是31/03/2013(我想以这种格式打印)。

5 个答案:

答案 0 :(得分:3)

我的浏览器(Chrome)会打印“无效日期”,但显然你的浏览器会以mm / dd / yyyy格式而不是dd / mm / yyyy来解释初始化日期。因此它认为这是2013年第24个月的第3天,即2015年1月3日。

如果你加上7天,我不知道为什么它会在1月6日打印出来。

最安全的方法是明确提供数字:

var dat = new Date( 2013, 2, 24 );

答案 1 :(得分:1)

更改日期格式,将日期放在月份之后:

var dat = new Date("03/24/2013");
dat.setDate(dat.getDate() + 7);
console.log(dat)

对我来说,这会返回:

Sun Mar 31 2013 00:00:00 GMT+0000 (GMT Standard Time) 

答案 2 :(得分:1)

您必须先提供月份编号。然后你会得到正确的答案

试试此代码

var dat = new Date("03/24/2013");
dat.setDate(dat.getDate() + 7);
var curr_date = dat.getDate();
var curr_month = dat.getMonth() + 1; //Months are zero based
var curr_year = dat.getFullYear();
console.log(curr_date + "/" + curr_month + "/" + curr_year);

答案 3 :(得分:0)

您应该在添加七个之前打印出的日期。我怀疑它将被设定为2013年第24个月的3 rd 日,相当于接近2015年1月的某个地方。

这就是为什么你要从当前的日期前进一个日期。为什么它给你1月份的6 th 而不是10 th ,我不确定,但你可以通过改变输入字符串到美国来修复它。格式为mm/dd/yyyy,或使用a more explicit constructor that's not subject to misinterpretation

var d = new Date(year, month, day, hours, minutes, seconds, milliseconds);

答案 4 :(得分:0)

试试这个!!!

var aDate = new Date(2013,3,24);
        aDate.setDate(aDate.getDate() + 7); 
        var dateString = aDate.getDate() + "-" + aDate.getMonth() + "-" + aDate.getFullYear(); 
        alert(dateString);