javascript - Moment JS 每月最后一天问题

标签 javascript jquery momentjs

我在项目中使用 momentJS,我有一个函数接受 monthyear 并返回该月的最后一天使用这些参数。

1 月到 11 月一切正常,我一使用 12 月,它就会在 1 月返回。

我有什么想法可以调整它来工作吗?我传递了真实的月份值(5 = 5 月),然后在函数中减去月份以使其基于 0,以便正确运行。

fiddle :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/

相关文章:

javascript - Bootstrap Datetimepicker 无法在折叠中工作

javascript - 获取动态创建的文本区域的 ID

javascript - Google Charts 从 PHP Ajax 添加数据

javascript - 更优雅/有效的方式来连续获取 6 个连续的前一个 DOM 元素?

jquery - 使用 Jquery 从多个选择选项中获取自定义属性值

javascript - 使用 UTC 存储在服务器上的 JS 日期计算?

localization - Moment.js - 时区语言(本地化)

javascript - Backbone fetch 在 IE9 及更低版本中不起作用

javascript - 无法访问中继器中自动完成的文本框

javascript - 在流程图中传递ajax参数