我正在构建一个简单的脚本来显示到月底的天数,以展示对 Javascript 中日期如何工作的理解。这也好,因为我显然没有。
我想获取当前日期,并将其与该月的最后一天进行比较,如date(今年,本月+1,第0天) - 1天
以查看有多少还剩下几天。我可以构建一个数组,告诉它每个月有多少天,但我应该能够使用对日期的内置理解来解决这个问题。
对于预期输出,本月最后一天(8 月 31 日)- 今天(8 月 30 日)= 1。但我得到 0。
这是我到目前为止所拥有的:
<p id="demo"></p>
<script>
var d = new Date();
var nxt = new Date(d.getFullYear(), d.getMonth() + 1, 0);
nxt.setDate(nxt.getDate() - 1);
document.getElementById("demo").innerHTML = nxt.getDay() - d.getDay();
</script>
目前澳大利亚东部标准时间 11 点(GMT + 1000),这就是我所在的位置,以防有任何帮助。重点是做出随时随地都能发挥作用的东西。
我的第一个怀疑是时区 - 我认为如果我使用所有 UTC 或不使用 UTC 显式,这可能会出现问题。但它似乎并没有这样做。我尝试过在一系列不同的地方询问 UTC 值,但奇怪的是似乎只能增加不准确度,因此它返回 -1。
最佳答案
我相信我只是偶然发现了答案 - 当指定日期时,月从 0 到 11 计算,但天仍然从 1 到 31 计算。因此,指定
Date(d.getFullYear(), d.getMonth() + 1, 0);
基本上是当月最后一天的简写。下一行是多余的:
nxt.setDate(nxt.getDate() - 1);
这将给出不正确的结果,因为它基本上会第二次递减。问题不在于 UTC/nonUTC,而在于不正确的日期规范。但不确定这种简写是否会导致其他问题。
关于JavaScript:意外结果获取该月剩余天数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52087945/