【问题标题】:Javascript / jQuery: How to check if date is last day of monthJavascript / jQuery:如何检查日期是否是一个月的最后一天
【发布时间】:2015-08-16 01:18:07
【问题描述】:

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

到目前为止,这工作正常,但我正在努力如果它到达一个月的最后一天就停止它。 我正在使用它来动态地将表行添加到 HTML 表中,并且由于数组设置为在 31 结束,因此当设置的月份少于 31 天时,它总是从下个月开始。然后我表格中的单元格显示例如...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 月。

非常感谢您对此的任何帮助, 迈克

【问题讨论】:

    标签: javascript jquery arrays date for-loop


    【解决方案1】:

    如果您在日期上加上一天,结果日期是下个月的第一天,那么检查的日期就是该月的最后一天。

    类似

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

    【讨论】:

    • 简单,一点也不差
    • 非常感谢 - 这很好用,在我的案例中比其他方法更容易实现。
    • 这是天才 - 谢谢...这是我的代码,效果很好(selected_date 已经是一个新的 Date())if(new Date(selected_date.getTime() + 24*60*60*1000).getDate() === 1) is_end_of_month = true;
    【解决方案2】:

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

    使用您的示例代码使用 jsbin:

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

    这将为您提供“m”月的最后一天:

    new Date(y, m + 1, 0)
    

    【讨论】:

    • 也谢谢你! - 在尝试了不同的方法之后,这对我来说效果最好。再次感谢。
    【解决方案3】:

    在你的 For 循环中添加这个

    if(day2 < day1)
        break;
    

    【讨论】:

    • 谢谢。这不起作用,因为在这种方法中 day2 总是大于 day1。
    【解决方案4】:

    也许有一个简单的功能:

    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());
    }
    

    【讨论】:

    • new Date(y, m + 1, 0) 中的 0(零);给你上个月的最后一天
    • 这总是假的,因为日期对象 d1 和日期对象 d2 永远不会相同。
    • @slash197:谢谢!你能解释一下最后一行吗?
    • @keewee279 将日期对象转换为数字,以便您准确比较它们
    • 如果提供的日期是一个月的最后一天,则返回 true,否则返回 false
    猜你喜欢
    • 2013-09-01
    • 2015-11-15
    • 1970-01-01
    • 1970-01-01
    • 2011-07-07
    • 2015-02-03
    • 1970-01-01
    • 2020-03-20
    • 2021-05-17
    相关资源
    最近更新 更多