Получить последний экземпляр за месяц с помощью moment.js - PullRequest
1 голос
/ 25 сентября 2019

Я использовал moment.js, чтобы получить последний и первый экземпляр за месяц.Например, последний понедельник месяца, последний вторник, последняя среда и т. Д.

Мне нужно получить фактические даты для планировщика, который я уже создал.

Проблема, с которой я столкнулсяmoment.js смотрит на последнюю неделю месяца.

enter image description here

В этом случае, если я попытаюсь получить последнюю средумесяц, я получаю даты 01.01.2020 и 01.042020 из-за способа, которым moment.js просматривает последнюю неделю месяца.

То, как я это делаю, похоже наэто:

let date = moment().add(i, 'month').endOf('month'); // To get the end of the month
let newDate = date.day(3).format('YYYY-MM-DD 03:00:00'); // To get Wednesday

Это работает в течение нескольких месяцев, но не для тех, которые имеют перекрытие.Возможно ли в moment.js сосредоточиться только на последней неделе месяца, чтобы она когда-либо смотрела только на даты между 21-28, если февраль и с 24 по 31, для всех остальных месяцев?

1 Ответ

2 голосов
/ 25 сентября 2019

Для последних Wednesday используйте -4 (7 - 3)

3 (положительно) - текущая неделя среда

-4 (отрицательно) - среда прошлой недели

https://momentjs.com/docs/#/get-set/day/

var date = moment().add(1, 'month').endOf('month')
console.log(date.day(date.day() >= 3 ? 3 : -4).toString())

var date = moment().add(2, 'month').endOf('month')
console.log(date.day(date.day() >= 3 ? 3 : -4).toString())

var date = moment().add(3, 'month').endOf('month')
console.log(date.day(date.day() >= 3 ? 3 : -4).toString())
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/moment.min.js"></script>
...