javascript - 如果是一个月的最后一天,如何使用 javascript 验证日期?

标签 javascript

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

最佳答案

(更新:请参阅底部的最后一个示例,但其余部分留作背景。)

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

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

    test.setDate(test.getDate() + 1);
    return test.getMonth() !== month;
}

Gratuitous live example

...或作为 paxdiablo指出,您可以检查结果中的日期,这可能更快(少一个函数调用)并且肯定更短:

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

Another gratuitous live example

如果您愿意,您可以在其中嵌入更多逻辑以避免创建临时日期对象,因为它真的只在二月份需要,其余的只是一个表查找,但两者的优点以上是他们将所有日期数学计算推迟到 JavaScript 引擎。创建对象的成本不会高到让人担心。


...最后:自JavaScript specification要求(第 15.9.1.1 节)一天的长度恰好 86,400,000 毫秒(实际上天 vary in length 有点),我们可以通过添加日期来使上面的时间更短:

function isLastDay(dt) {
    return new Date(dt.getTime() + 86400000).getDate() === 1;
}

Final gratuitous example

关于javascript - 如果是一个月的最后一天,如何使用 javascript 验证日期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6355063/

相关文章:

javascript - Angular 输入更新验证器

javascript - 无法更改 div 标签的 html 内容

c# - 从列表获取数据到 JavaScript MVC 3?

javascript - 为什么我无法删除窗口上的 'resize' 事件?

javascript - Puppeteer:将截获的图像请求的 URL 更改为 base64 图像

java - 设置 JAVA_HOME 的 Grunt 任务

javascript - 当我使用服务通信时触发变化检测

javascript - 如何重复通过ajax检索数据的文本字段

javascript - 在 JavaScript 函数中解析同级文件夹

javascript - 停止页面卸载/关闭