Сформировать список дней из номера недели и года с моментом - PullRequest
0 голосов
/ 30 марта 2020

Я хочу изменить свою функцию, чтобы получить список дней из номера недели И года (добавить год в качестве аргумента):

var dateformat = "YYYY/MM/DD";
function getWeekDaysByWeekNumber(weeknumber)
{
    var date = moment().isoWeek(weeknumber||1).startOf("week"), weeklength=7, result=[];
    while(weeklength--)
    {
        result.push(date.format(dateformat));
        date.add(1,"day")
    }
    return result;
}

, например: getWeekDaysByWeekNumber(weeknumber, year)

спасибо за ваше помощь:)

Ответы [ 3 ]

0 голосов
/ 30 марта 2020

Наконец, я добавил год при использовании функции года () момента

function getWeekDaysByWeekNumber(weeknumber, year)
{
    var dateformat = "YYYY/MM/DD";
    var date = moment().year(year).isoWeek(weeknumber||1).startOf("week"), weeklength=7, result=[];
    while(weeklength--)
{
    result.push(date.format(dateformat));
    date.add(1,"day")
}
return result;

}

0 голосов
/ 30 марта 2020

Вы также можете попробовать это. Сначала я использовал форматирование, чтобы соответствовать году, номеру недели и текущему дню

function getDays(year, week) {
  return [1, 2, 3, 4, 5, 6, 7].map(d =>
    moment(`${year}-${week}-` + d, "YYYY-W-E")
  );
}
let days = getDays("2020", "5");
days.forEach(item => {
  console.log(item.format("YYYY-MM-DD"));
});
 <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.2/moment.min.js"></script> 
0 голосов
/ 30 марта 2020

Как указано js в Поддерживаемые строки ISO 8601 , вы можете использовать его шаблон для получения первого дня недели в году.

function getWeekDaysByWeekNumber(weeknumber, year)
{
    let strWeeknumber = ('0' + weeknumber).slice(-2)
    let strDate = `${year}W${strWeeknumber}0`
    let date = moment(strDate);
    let result = [];
    for (let i = 0; i < 7; i++)
    {
        result.push(date.format("YYYY/MM/DD"));
        date.add(1,"day");
    }
    return result;
}
...