我正在使用moment.js在我的项目中使用日历功能,我想获取给定月份“星期日”的第二周的日期。 请帮助我。
答案 0 :(得分:1)
您可以使用.day(n)
,然后将其与.startOf('month')
结合使用。
此方法可用于设置星期几,星期日为0,星期六为6。
如果给出的值为0到6,则结果日期将在当前(星期日至星期六)的一周之内。
如果超出范围,它将持续长达数周。
演示:
const days = {
Mon: 1,
Tue: 2,
Wed: 3,
Thu: 4,
Fri: 5,
Sat: 6,
Sun: 7
}
const nthDayOfMonth = (monthMoment, day, weekNumber) => {
let m = monthMoment.clone()
.startOf('month') // go to the beginning of the month
.day(day)
if (m.month() !== monthMoment.month()) m.add(7, 'd');
return m.add(7 * (weekNumber - 1), 'd').format('dddd YYYY-MM-DD')
}
console.log({
firstSaturdayThisMonth: nthDayOfMonth(moment(), days.Sat, 1),
firstSundayThisMonth: nthDayOfMonth(moment(), days.Sun, 1),
firstMondayThisMonth: nthDayOfMonth(moment(), days.Mon, 1),
firstTuesdayThisMonth: nthDayOfMonth(moment(), days.Tue, 1),
firstWednesdayThisMonth: nthDayOfMonth(moment(), days.Wed, 1),
firstThursdayThisMonth: nthDayOfMonth(moment(), days.Thu, 1),
firstFridayThisMonth: nthDayOfMonth(moment(), days.Fri, 1),
secondSaturdayThisMonth: nthDayOfMonth(moment(), days.Sat, 2),
secondSundayThisMonth: nthDayOfMonth(moment(), days.Sun, 2),
secondMondayThisMonth: nthDayOfMonth(moment(), days.Mon, 2),
secondTuesdayThisMonth: nthDayOfMonth(moment(), days.Tue, 2),
secondWednesdayThisMonth: nthDayOfMonth(moment(), days.Wed, 2),
secondThursdayThisMonth: nthDayOfMonth(moment(), days.Thu, 2),
secondFridayThisMonth: nthDayOfMonth(moment(), days.Fri, 2),
secondTuedayMarch2020: nthDayOfMonth(moment('2020-03-15'), days.Tue, 2),
thirdFridayDecember1986: nthDayOfMonth(moment('1986-12-04'), days.Fri, 3)
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/moment.min.js"></script>