从日期选择器中的特定日期计算一个月的第一周?

问题描述

例如,如果 6 月 1 日是星期四,那么 6 月的第 1 周应该从 5 日开始,因为它是星期一。

我想在日历中禁用交替周,但一周应该从第一个月的星期一开始。

我也可以使用momentJS

解决方法

步骤

  1. 使用 .startOf('month') 获取月初,我使用 .add(1,'month') 传递到下个月
  2. 使用 .day() 检查日期是否是星期一,返回一个从 0 到 6(星期日 - 星期六)的数字,所以星期一是数字 1
  3. 如果不是星期一,请使用 .add(1,'week') 添加一周的日期,并使用 .day() 将日期设置为星期一,但这次通过方法传递您想要设置的周数( 1)

const MONDAY = 1;

let nextMonthStartDate = moment().add(1,'month').startOf('month');

if (nextMonthStartDate.day() !== MONDAY) nextMonthStartDate = moment(nextMonthStartDate).add(1,'week').day(MONDAY);

console.log(`The first complete date of ${nextMonthStartDate.format('MMMM')} start at the ${nextMonthStartDate.format('LLLL')}`);
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.29.1/moment.min.js"></script>

此代码写入当前年份的第一个完整周。

const numberOfMonth = 11;

const yearStartDate = moment().startOf('year');

const MONDAY = 1;

for (let i = 0; i <= 11; i++) {
  let monthStartDate = moment(yearStartDate).add(i,'month').startOf('month');
  if (monthStartDate.day() !== MONDAY) monthStartDate = moment(monthStartDate).add(1,'week').startOf('week').day(MONDAY);
  console.log(`The first complete date of ${monthStartDate.format('MMMM')} start at the ${monthStartDate.format('LLLL')}`);
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.29.1/moment.min.js"></script>

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...