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

标签 javascript date datetime utc

我正在构建一个简单的脚本来显示到月底的天数,以展示对 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/

相关文章:

php - javascript 和 php 中日期的奇怪问题

将 R 中的日期舍入为任意分钟/小时的精度级别

javascript - 为什么我无法使用 JSON 数据?

javascript - JQuery 复选框不会更改 .prop ("checked"处的视觉状态,是的)

javascript - React Router v4(未找到页面)服务器端渲染

javascript - 如何从 Angular 之外编译动态模板?

php - 选择两个日期之间的数据?

c# - 是什么导致我的代码 : String was not recognized as a valid DateTime 出现此错误

c# - 如何处理通知警报和服务器进程的用户指定的本地日期时间?

php - 使用 PHP date() 函数将 MySQL 日期时间转换为 RFC 2822