从 moment.js 获取一个月中的周数(行数)

cup*_*_of 5 javascript momentjs

我想使用 momentjs 获取任何月份的日历行数(周)

例如:

这将是5

在此输入图像描述

这将是6

在此输入图像描述

这是我必须处理的内容:

我将月份、月初和月底作为即时项目

const month; // (month moment obj)
const start = moment(month).startOf('month');
const end = moment(month).endOf('month');
Run Code Online (Sandbox Code Playgroud)

这是我到目前为止所尝试过的(没有运气)

const weeks = end.diff(start, 'week'); // always gives 4
const weeks = moment.duration(end - start).weeks() + 1; // always gives 5
Run Code Online (Sandbox Code Playgroud)

为了简单性和准确性,我真的更喜欢使用 Moment.js。我在这里看到了一些纯 JS 答案,但没有一个是真正可靠的。

jor*_*gos 3

这是一个奇怪的问题。编辑的新解决方案:计算第一周的天数(第一行),然后计算接下来的几周(中间行),如果有待处理的天数,则添加另一行:

考虑到该周从星期一以“isoWeekDay()”开始。

截至 2019 年 10 月 9 日:

let now = moment('9/oct/2019');
// First row
let firstWeekDays = 7 - now.startOf('month').isoWeekday() + 1;
let rows = 1
rest = now.daysInMonth() - firstWeekDays;
// Middle rows
let middleRows = Math.floor(rest/7);
rows = rows + middleRows;
rest = rest - (middleRows * 7);
// Last row?
if (rest > 0) {
    rows = rows + 1;
}
console.log(rows); // 5
Run Code Online (Sandbox Code Playgroud)