получить начало и конец дня недели по году, месяцу и номеру недели - PullRequest
1 голос
/ 03 июня 2019

Цель

Я хочу получить начальный и конечный день, указав номер года, месяца и недели. Я пытаюсь использовать моменты, как это уже было в моей зависимости.

Работа, которую я сделал

Кажется, это невозможно, если я установлю .month (monthInNumber), так как я не получаю понедельник, и он испортился, поэтому я сделал наивный способ, который не работает = 4 * month, и установил его как неделю .

getStartDateByWeekAndYear = function(week, year, month) {
    return moment().day("Monday").year(year).week((4*month)+(week)).toDate();
};

За последний день (я хочу, чтобы субботой был последний день, а не воскресенье)

getLastDateByWeekAndYear = function(week, year, month) {
    return moment().day("Saturday").year(year).week((4*month)+(week)).toDate();
};

Я также попробовал пару решений, но, кажется, это не работает, если я пытаюсь реализовать то же самое в моих функциях выше.

Ожидаемый результат

getStartDateByWeekAndYear(2, 2019, 6)

Я должен получить понедельник, 3 июня 2019 года, сегодня дата

getEndDateByWeekAndYear(2, 2019, 6)

Я должен получить субботу, 8 июня 2019 года, которая является субботой этой недели

1 Ответ

1 голос
/ 03 июня 2019

Вы можете получить это начало данного месяца / года, используя moment({Object}), а затем получить желаемую неделю, добавив недели, используя add().

* 1008.* Здесь живой образец:

const getStartDateByWeekAndYear = function(week, year, month) {
    return moment({y: year, M: month-1, d: 1})
      .add(week-1, 'w').day("Monday").toDate();
};

const getEndDateByWeekAndYear = function(week, year, month) {
    return moment({y: year, M: month-1, d: 1})
      .add(week-1, 'w').day("Saturday").toDate();
}

console.log( getStartDateByWeekAndYear(2, 2019, 6) );
console.log( getEndDateByWeekAndYear(2, 2019, 6)  );
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/moment.min.js"></script>
...