gpt4 book ai didi

JavaScript:获取当月剩余天数的意外结果

转载 作者:行者123 更新时间:2023-11-30 14:24:59 24 4
gpt4 key购买 nike

我正在构建一个简单的脚本来显示到月底的天数,以展示对日期在 Javascript 中的工作原理的理解。这样也好,因为我显然没有。

我想获取当前日期,并将其与该月的最后一天进行比较,如 date(this year, this month +1, day 0) - 1 day 看有多少还有几天。我可以构建一个数组来告诉它每个月有多少天,但我应该能够使用对日期的内在理解来解决这个问题。

对于预期输出,本月最后一天(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>

目前是 AEST(格林威治标准时间 + 1000)的 11 点,这是我所在的位置,以防有任何帮助。重点是制作可以随时随地使用的东西。


我的第一个怀疑是时区 - 我认为如果我使用所有 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com