Javascript 使用getDate+设置日期;n今天返回';s日期+;N

Javascript 使用getDate+设置日期;n今天返回';s日期+;N,javascript,Javascript,我希望d2是d1+14天,而不是今天的日期+14天 <script type="text/javascript"> var d1 = new Date(2014, 7, 1); var d2 = new Date(); d2.setDate(d1.getDate() + 14); // d1 = Fri Aug 01 2014 00:00:00 GMT+0100 (GMT Daylight Time) document.write("d1 = " + d1);

我希望d2是d1+14天,而不是今天的日期+14天

<script type="text/javascript">
  var d1 = new Date(2014, 7, 1);
  var d2 = new Date();
  d2.setDate(d1.getDate() + 14);

  // d1 = Fri Aug 01 2014 00:00:00 GMT+0100 (GMT Daylight Time)
  document.write("d1 = " + d1);
  document.write("<br></br>")

  // today's date is 16-04-2014
  // d2 = Tue Apr 15 2014 17:36:03 GMT+0100 (GMT Daylight Time)
  document.write("d2 = " + d2);
</script>

风险值d1=新日期(2014年7月1日);
var d2=新日期();
d2.设置日期(d1.getDate()+14);
//d1=2014年8月1日星期五00:00:00 GMT+0100(GMT昼间)
文件。写入(“d1=”+d1);
文档。写(“

”) //今天的日期是2014年4月16日 //d2=2014年4月15日星期二17:36:03 GMT+0100(GMT昼间) 文件。写入(“d2=”+d2);
如何使d2=d1+14天?

您为d2设定了一个新日期(今天),但只更改了日期,这应该可以:

var d1 = new Date(2014, 7, 1);
var d2 = new Date(2014, 7, d1.getDate()+14);

setDate
设置现有实例的月份,这有点令人惊讶。由于您已使用今天初始化了
d2
,因此只需更改该日期的月份,而不涉及
d1
的任何其他方面

您可能想要:

var d1 = new Date(2014, 7, 1);  // A specific date
var d2 = new Date(d1);          // Clone that date
d2.setDate(d1.getDate() + 14);  // Move forward 14 days
这就给了我们8月1日的
d1
,8月15日的
d2

另一个选择是:

var d1 = new Date(2014, 7, 1);
var d2 = new Date(d1.getFullYear(), d1.getMonth(), d1.getDate() + 14);
顺便说一句,即使你已经过了月底,这两种方法仍然有效

第二个选项的完整示例:


日期加14天
身体{
字体系列:无衬线;
}
(功能(){
变量d1,d2;
显示(“从8月1日开始:”)
d1=新日期(2014年7月1日);
d2=新日期(d1.getFullYear()、d1.getMonth()、d1.getDate()+14);
显示(“d1=”+d1);
显示(“d1=”+d2);
document.body.appendChild(document.createElement('hr'));
显示(“从8月20日开始:”)
d1=新日期(2014年7月20日);
d2=新日期(d1.getFullYear()、d1.getMonth()、d1.getDate()+14);
显示(“d1=”+d1);
显示(“d1=”+d2);
功能显示(msg){
var p=document.createElement('p');
p、 innerHTML=字符串(msg);
文件.正文.附件(p);
}
})();
仅将getTime()函数放在d2Date()函数中

选中此项 JavaScript
d1是8月的日期,d2是今天。您将d2设置为今天+14天。正确的结果如下:

var d1 = new Date(2014, 7, 1);
var d2 = new Date(d1.setDate(d1.getDate() + 12));

可能是d2.setDay(d1.getDay()+14)@user3417400 getDay return
d2=8月19日星期二00:00:00 UTC+2014年5月30日。让我检查一下规范。编辑:是的,
Date
构造函数的单参数版本所做的第一件事就是对传入的内容调用
ToPrimitive
ToPrimitive
on
Date
instances为我们提供数值。不错!
  var d1 = new Date(2014, 7, 1);
  var d2 = new Date(d1.getTime());
  d2.setDate(d1.getDate() + 14);

  // d1 = Fri Aug 01 2014 00:00:00 GMT+0100 (GMT Daylight Time)
  document.write("d1 = " + d1);
  document.write("<br></br>")

  // today's date is 16-04-2014
  // d2 = Tue Apr 15 2014 17:36:03 GMT+0100 (GMT Daylight Time)
  document.write("d2 = " + d2);
d1 = Fri Aug 1 00:00:00 UTC+0530 2014

d2 = Fri Aug 15 00:00:00 UTC+0530 2014
var d1 = new Date(2014, 7, 1);
var d2 = new Date(d1.setDate(d1.getDate() + 12));