我想将X天添加到特定日期,其中X是我之前指定的数字。
EG。日期为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());
它正在工作,但只有当日期没有传递到给定日期的下一个月时,否则,输出是好的。
你们有任何解决方案吗?
答案 0 :(得分:3)
这样简单吗?
var fiveDaysLater = new Date( existingDate.getTime() );
fiveDaysLater.setDate(fiveDaysLater.getDate() + 5);
答案 1 :(得分: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岁而不是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之类的库。