[英]$yesterday = $today.setDate($today.getDate() - 1); not displaying yesterday's date
[英]setDate with getDate + n returns today's date + n
我希望 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 天?
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
这给了我们d1
8 月 1 日和d2
8 月 15 日。
另一种选择是:
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>
您正在为 d2 创建一个新日期(今天),但只更改日期,这应该有效:
var d1 = new Date(2014, 7, 1);
var d2 = new Date(2014, 7, d1.getDate()+14);
只将getTime()函数放在 d2 Date()函数中,
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
d1 是八月的日期,d2 是今天。 您将 d2 设置为今天 + 14 天。 正确的结果如下:
var d1 = new Date(2014, 7, 1);
var d2 = new Date(d1.setDate(d1.getDate() + 12));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.