1

可能重复:
如何将天数添加到今天的日期?

我想将 X days 添加到某个日期,其中 X 是我之前指定的数字。

例如。日期是29/11/2012(格式:)DD/MM/YYYY,我想5在这个日期上加上几天,所以输出应该是03/12/2012

我尝试了什么:

var days_to_add = 5;
$myyear = 2012;
$mymonth = 11;
$myday = 29;
date = new Date();
date.setFullYear($myyear,$mymonth,$myday);
date.setDate(date.getDate()+(days_to_add-1));
alert(date.getDate()+'/'+date.getMonth()+'/'+date.getFullYear());

它正在工作,但只有当日期没有超过给定日期的下个月时,否则输出是好的。

你们有什么解决办法吗?

4

2 回答 2

3

像这样更简单的东西?

 var fiveDaysLater = new Date( existingDate.getTime() );
 fiveDaysLater.setDate(fiveDaysLater.getDate() + 5);
于 2012-11-05T17:17:26.523 回答
1

您的问题不在于添加日期,因为setDate函数会根据需要自动增加年份或月份:

如果您指定的参数超出预期范围,setDate 会尝试相应地更新 Date 对象中的日期信息

但是您没有正确创建日期。改变

$myyear = 2012;
$mymonth = 11;
$myday = 29;
date = new Date();
date.setFullYear($myyear,$mymonth,$myday);

$myyear = 2012;
$mymonth = 11;
$myday = 29;
date = new Date($myyear,$mymonth,$myday);

Date 构造函数在 [0, 11] 中需要一个月。如果您希望 11 是 11 月而不是 12 月,请使用

date = new Date($myyear,$mymonth-1,$myday);

getMonth在 [0, 11] 中返回一个整数,这可能也让你感到惊讶。date.getMonth()+1如果您想使用通常的日期格式,则需要输出:

alert(date.getDate()+'/'+(date.getMonth()+1)+'/'+date.getFullYear());

如果要添加前导零,可以这样做:

alert(
     (date.getDate()<10 ? "0" : "") + date.getDate()
     +'/'+
     (date.getMonth()<9 ? "0" : "") + (date.getMonth()+1)
     +'/'+
     date.getFullYear() 
);

示范

请注意,如果您有很多日期操作要做,您应该考虑使用类似date.js的库。

于 2012-11-05T17:22:04.687 回答