我希望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>
如何让d2 = d1 + 14天?
答案 0 :(得分:5)
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}为d1
,8月15日为d2
。
另一种选择是:
var d1 = new Date(2014, 7, 1);
var d2 = new Date(d1.getFullYear(), d1.getMonth(), d1.getDate() + 14);
即使你已经过了月底,这两项工作都是有效的。顺便提一下。
第二个选项的完整示例:Live Copy
<!DOCTYPE html>
<html>
<head>
<meta charset=utf-8 />
<title>Date plus 14 days</title>
<style>
body {
font-family: sans-serif;
}
</style>
</head>
<body>
<script>
(function() {
var d1, d2;
display("Starting with August 1st:")
d1 = new Date(2014, 7, 1);
d2 = new Date(d1.getFullYear(), d1.getMonth(), d1.getDate() + 14);
display("d1 = " + d1);
display("d1 = " + d2);
document.body.appendChild(document.createElement('hr'));
display("Starting with August 20th:")
d1 = new Date(2014, 7, 20);
d2 = new Date(d1.getFullYear(), d1.getMonth(), d1.getDate() + 14);
display("d1 = " + d1);
display("d1 = " + d2);
function display(msg) {
var p = document.createElement('p');
p.innerHTML = String(msg);
document.body.appendChild(p);
}
})();
</script>
</body>
</html>
答案 1 :(得分:1)
你为d2制作了一个新的日期(今天),但只改变了一天,这应该有效:
var d1 = new Date(2014, 7, 1);
var d2 = new Date(2014, 7, d1.getDate()+14);
答案 2 :(得分:1)
只在日期()函数中添加 getTime()函数,
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
答案 3 :(得分:1)
d1是八月的日期,d2是今天。您将d2设置为今天+ 14天。正确的结果如下:
var d1 = new Date(2014, 7, 1);
var d2 = new Date(d1.setDate(d1.getDate() + 12));