Javascript / jQuery:如何检查日期是否是月份的最后一天

时间:2015-06-02 09:55:59

标签: javascript jquery arrays date for-loop

我有以下代码(缩短),它在循环数组时创建一个月的日期。

到目前为止,此工作正常,但如果达到一个月的最后一天,我正在努力停止。 我使用它来动态地将表行添加到HTML表中,并且当数组设置为31时结束时,它总是从设置月份少于31天的下个月开始。然后我表中的单元格显示例如... {2}专栏的28, 29, 1, 2

有人可以告诉我如何检查day1day2day3是否是该月的最后一天,是否将其设置为''?

我的想法是,以下内容会给我一个月的最后一天,但我找不到办法在这里工作并正确使用它进行比较:

var d = new Date(y, m+1, 0);

我的JS(缩写):

$('#btnStart').on('click', function(){
    var date1, day1;
    var date2, day2;            

    var d = 0;
    var m = 0;  // user input
    var y = 2015; // user input
    for (d = 0; d <= 30; d++) {
        date1 = new Date(y, m, d+1);
        day1 = date1.getDate();
        date2 = new Date(y, m+1, d+1);
        day2 = date2.getDate();
    }
});

更新:这仅在特定年份内需要,因此永远不会从12月到1月。

非常感谢您对此提供的任何帮助, 麦克

4 个答案:

答案 0 :(得分:3)

如果您在日期中添加一天,并且结果日期是下个月的第一天,则检查日期是其当月的最后一天。

类似

isLast = (new Date(examinedDate.getTime() + 24*60*60*1000).getDate()) === 1

答案 1 :(得分:1)

在For循环中添加

if(day2 < day1)
    break;

答案 2 :(得分:1)

或许有一个简单的功能:

function isLastDay(y, m, d)
{
    var d1 = (m < 11) ? new Date(y, m + 1, 0) : new Date(y, 0, 0);
    var d2 = new Date(y, m, d);
    return (d1.getTime() === d2.getTime());
}

答案 3 :(得分:1)

您应该使用date.getTime()来比较日期。

使用示例代码运行jsbin:

http://jsbin.com/puhuvirize/2/edit?js,output

这将为您提供月份'm'的最后一天:

new Date(y, m + 1, 0)