如何使用javascript验证日期是否是该月的最后一天?

Fir*_*and 15 javascript

如何验证用户输入日期是使用javascript的月份的最后一天?

T.J*_*der 29

(更新:请参见底部的最后一个示例,但其余部分保留为背景.)

您可以向Date实例添加一天,并查看月份是否更改(因为JavaScript的Date对象会智能地修复无效的日期值),例如:

function isLastDay(dt) {
    var test = new Date(dt.getTime()),
        month = test.getMonth();

    test.setDate(test.getDate() + 1);
    return test.getMonth() !== month;
}
Run Code Online (Sandbox Code Playgroud)

无偿的现场例子

...或者正如paxdiablo所指出的那样,你可以检查生成的日期,这可能更快(函数调用少一个)并且肯定会更短:

function isLastDay(dt) {
    var test = new Date(dt.getTime());
    test.setDate(test.getDate() + 1);
    return test.getDate() === 1;
}
Run Code Online (Sandbox Code Playgroud)

另一个无端的现场例子

你可以在那里嵌入更多的逻辑来避免创建临时日期对象,如果你喜欢它,因为它实际上只需要在二月份,其余的只是一个表查找,但上述两者的优点是他们将所有日期数学推迟到JavaScript引擎.创建对象不会太昂贵而无法担心.


......最后:由于JavaScript规范要求(第15.9.1.1节)一天的长度恰好是 86,400,000毫秒(实际上天数有点变化),我们可以通过添加日期来缩短上述时间:

function isLastDay(dt) {
    return new Date(dt.getTime() + 86400000).getDate() === 1;
}
Run Code Online (Sandbox Code Playgroud)

最后的无端例子

  • +1,类似于我发布的内容(尽管检查月份是否为1而不是月份不同)但是你用代码打败了我,所以我删除了它:-) (2认同)