在javascript中获取上个月/上个月的最后一天

时间:2018-03-16 18:19:55

标签: javascript date

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

 lastDayOfLastMonth = month === 0 ? new Date(year - 1, 11, 0).getDate() : new Date(year, month, 0).getDate();
这个想法,如果我在一年的第一个月,上一个月是去年的最后一个月。

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

4 个答案:

答案 0 :(得分:1)

<IngredientList items={ingredient.items} /> 构造函数的日期部分不是0索引,而是该月的实际日期。在您的第一个条件Date中,您将首先将您的日期初始化为2017年12月0日。日期构造函数会将此更正为2017年11月30日。

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

Date

请注意,lastDayOfLastMonth = new Date(currentYear, currentMonth, 0).getDate(); 仍然是0索引(即1月是0月,12月是11月)

答案 1 :(得分:0)

下面的

也会给你想要的结果

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

答案 2 :(得分:0)

var d = new Date();
var n = d.getMonth();
// first month
if(n == 0){
    console.log(new Date(new Date().getFullYear(), 11, 31).getDate());
}

答案 3 :(得分:0)

请改为尝试:

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