【发布时间】:2019-09-17 21:31:17
【问题描述】:
在 javascript 中增加日期不能按预期工作。
该功能以前运行良好,但我不知道为什么现在无法运行。
实际结果:
4 月 30 日星期二
5 月 1 日星期三
6 月 1 日星期六
7 月 3 日星期三
8 月 3 日星期六
9 月 4 日星期三
10 月 6 日星期日
预期:
4 月 30 日星期二
5 月 1 日星期三
5 月 2 日星期四
5 月 3 日星期五
5 月 4 日星期六
5 月 5 日星期日
5 月 6 日星期一
var dt = new Date();
var nextDay = new Date(dt);
nextDay.setDate(dt.getDate() + 1);
document.getElementById("datetime1").innerHTML = ("0" + nextDay).substring(1, 12);
nextDay.setDate(dt.getDate() + 2);
document.getElementById("datetime2").innerHTML = ("0" + nextDay).substring(1, 12);
nextDay.setDate(dt.getDate() + 3);
document.getElementById("datetime3").innerHTML = ("0" + nextDay).substring(1, 12);
nextDay.setDate(dt.getDate() + 4);
document.getElementById("datetime4").innerHTML = ("0" + nextDay).substring(1, 12);
nextDay.setDate(dt.getDate() + 5);
document.getElementById("datetime5").innerHTML = ("0" + nextDay).substring(1, 12);
nextDay.setDate(dt.getDate() + 6);
document.getElementById("datetime6").innerHTML = ("0" + nextDay).substring(1, 12);
nextDay.setDate(dt.getDate() + 7);
document.getElementById("datetime7").innerHTML = ("0" + nextDay).substring(1, 12);
nextDay.setDate(dt.getDate() + 8);
pre {
display: block;
unicode-bidi: embed;
font-family: monospace;
white-space: pre;
}
<pre id="datetime1"></pre>
<pre id="datetime2"></pre>
<pre id="datetime3"></pre>
<pre id="datetime4"></pre>
<pre id="datetime5"></pre>
<pre id="datetime6"></pre>
<pre id="datetime7"></pre>
【问题讨论】:
-
在这种情况下你应该使用 for-loop。一个小错字可能会破坏您的代码。
-
我给你做了一个sn-p,所以你有一个minimal reproducible example
-
旁注:
var nextDay = new Date(dt);不是克隆日期的可靠方法。它在一些 JavaScript 引擎上工作/工作,而不是其他。要可靠地克隆日期,请使用来自getTime(或一元+)的毫秒数:var nextDay = new Date(dt.getTime());或var nextDay = new Date(+dt); -
如果你的源日期可以有不同的格式,也许使用 moment.js 来格式化日期很有用
-
@AlainIb 对于这个简单的问题,时刻是一个愚蠢的开销
标签: javascript