【问题标题】:Getting the last day of previous/last month in javascript在javascript中获取上/上个月的最后一天
【发布时间】:2018-03-16 18:19:55
【问题描述】:

我正在使用以下代码,其中月份是当前月份(我在哪里):

 lastDayOfLastMonth = month === 0 ? new Date(year - 1, 11, 0).getDate() : new Date(year, month, 0).getDate();

这个想法是,如果我在一年的第一个月,上个月就是上一年的最后一个月。

如果我在 2018 年 1 月,报告 2017 年 12 月的最后一天是 30 岁,这不是真的,是 31 岁,但我不明白为什么。

【问题讨论】:

  • 这对你有用吗??

标签: javascript date


【解决方案1】:

Date 构造函数的日部分不是 0 索引的,而是一个月中的实际日期。在您的第一个条件new Date(year - 1, 11, 0).getDate() 中,您首先将日期初始化为 2017 年 12 月 0 日。然后日期构造函数将其更正为 2017 年 11 月 30 日。

如果您想要上个月的最后一天,您可以忽略三元运算符并执行以下操作,因为Date 构造函数将进行必要的转换:

lastDayOfLastMonth = new Date(currentYear, currentMonth, 0).getDate();

请注意,currentMonth 仍为 0 索引(即 1 月为第 0 个月,12 月为第 11 个月)

【讨论】:

    【解决方案2】:
    var d = new Date();
    var n = d.getMonth();
    // first month
    if(n == 0){
        console.log(new Date(new Date().getFullYear(), 11, 31).getDate());
    }
    

    【讨论】:

    • 简要说明代码的作用将是一个很好的改进。考虑为 OP 和整个社区添加一个
    【解决方案3】:

    下面也给你想要的结果

    var LastDay =  new Date(year-1, 12, 0);
    //new Date(year - 1, 11, 0).getDate() this line seems issue in your code
    

    这个为我返回 2017 年 12 月 31 日

     var month = 0;//this you will get when do dt.getMonth() in January month
     var year = 2018;           
     var LastDay = new Date(year, month, 0);
    
    document.getElementById("demo").innerHTML = LastDay;
    

    试试这个对我有用

     var dt = new Date();
     var month = dt.getMonth();
     var year = 2018;
    
     var LastDay = new Date(year, month, 0);
    
     console.log(LastDay);
    

    【讨论】:

      【解决方案4】:

      试试这个:

      lastDayOfLastMonth = month === 0 ? new Date(year - 1, 12, 0).getDate(): 
                                         new Date(year, month, 0).getDate();
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-11-29
        • 2022-12-17
        • 1970-01-01
        相关资源
        最近更新 更多