【发布时间】:2021-08-15 01:21:43
【问题描述】:
例如,如果 6 月 1 日是星期四,那么 6 月的第 1 周应该从 5 日开始,因为它是星期一。
我想禁用日历中的隔周,但该周应仅从第一个月的星期一开始。
我也可以使用momentJS
【问题讨论】:
标签: javascript datepicker calendar momentjs daterangepicker
例如,如果 6 月 1 日是星期四,那么 6 月的第 1 周应该从 5 日开始,因为它是星期一。
我想禁用日历中的隔周,但该周应仅从第一个月的星期一开始。
我也可以使用momentJS
【问题讨论】:
标签: javascript datepicker calendar momentjs daterangepicker
步骤
.startOf('month') 获取月初,我使用.add(1, 'month') 传递到下个月.day() 检查日期是否为星期一,返回一个从 0 到 6(星期日 - 星期六)的数字,因此星期一是数字 1.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>
【讨论】:
isInvalidDate 的选项,它是一个必须返回布尔值的函数。但我不确定它是否是您需要的,您可以在您的问题或jsfiddle 中添加一个工作示例吗?