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

时间:2011-06-15 08:36:51

标签: javascript

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

6 个答案:

答案 0 :(得分:27)

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

您可以向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

答案 1 :(得分:1)

浏览器将第0天标识为上个月的最后一天

var month = 0; // January
var d = new Date(2008, month + 1, 0);
alert(d); // last day in January

如此处所示:Calculate last day of month in javascript

您只需使用用户插入的月份+ 1 day = 0 来检查他是否已插入该月的最后一天。

答案 2 :(得分:0)

假设你得到了:

var month = getMonthFromUserInput();
var year = getYearFromUserInput();

这将给出该月的最后一天

new Date((new Date(year , month , 1)) -1 )

请记住,第0个月是1月

答案 3 :(得分:0)

这是有效的。

var   lastday   =   new   Date(new   Date().getFullYear(),new   Date().getMonth()+1,0).getDate();
希望能帮到你。

答案 4 :(得分:0)

function isLastDayOfMonth(date){
    return date.getDate() == new Date(date.getFullYear(),date.getMonth()+1,0).getDate();
}

答案 5 :(得分:0)

如果您想避免重新发明轮子并有额外的代码来维护和测试,我强烈建议您使用Moment.js或date-fns之类的外部库。

我个人提倡date-fns,因为它不像Moment那样庞大,并且依赖于Date原语而不是Moment对象。

您感兴趣的功能名为isLastDayOfMonth,可以找到here