我在项目中使用momentJS
,我有一个函数接受month
和year
并使用这些参数返回月份的最后一天。
从1月到11月,一切工作正常,而当我使用12月时,它将恢复为1月。
有什么想法可以调整它吗?我传递的是真实的月份值(5 = 5月),然后在函数中减去一个月份,使其基于0才能正常工作。
小提琴:https://jsfiddle.net/bhhcp4cb/
// Given a year and month, return the last day of that month
function getMonthDateRange(year, month) {
// month in moment is 0 based, so 9 is actually october, subtract 1 to compensate
// array is 'year', 'month', 'day', etc
var startDate = moment([year, month]).add(-1,"month");
// Clone the value before .endOf()
var endDate = moment(startDate).endOf('month');
// make sure to call toDate() for plain JavaScript date type
return { start: startDate, end: endDate };
}
// Should be December 2016
console.log(moment(getMonthDateRange(2016, 12).end).toDate())
// Works fine with November
console.log(moment(getMonthDateRange(2016, 11).end).toDate())
最佳答案
代替:
var startDate = moment([year, month]).add(-1,"month");
做这个:
var startDate = moment([year, month-1]);
基本上,您不想从错误的位置开始然后再移动一个月,而只是想从正确的位置开始。
关于javascript - Moment JS每月的最后一天,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39353993/