Извлечь даты из HTML недели выбора - PullRequest
0 голосов
/ 30 апреля 2020

Можно ли получить дни / даты выбранной недели для html средства выбора недели (в ванили JS). Например,

<input type="week" name="week" id="copyWeekInput">

, а затем

document.querySelector("#copyWeekInput")... // for week 18, return something like ["2020-04-27", "2020-04-28", "2020-04-29", "2020-04-30", "2020-05-01", "2020-05-02", "2020-05-03"]

Странно, что они есть в интерфейсе, но я не могу найти их в объекте входной недели.

Спасибо.

1 Ответ

0 голосов
/ 30 апреля 2020

Поскольку <input type="week" /> является только вводом недели, он не будет возвращать диапазон дат. Однако вы можете разобрать его и найти список самостоятельно.

let button = document.querySelector('#button');
button.onclick = () => {
  let week = document.querySelector('#week');
  let dates = parseDates(week.value);
  console.log(dates);
}


let parseDates = (inp) => {
  let year = parseInt(inp.slice(0,4), 10);
  let week = parseInt(inp.slice(6), 10);

  let day = (1 + (week - 1) * 7); // 1st of January + 7 days for each week

  let dayOffset = new Date(year, 0, 1).getDay(); // we need to know at what day of the week the year start

  dayOffset--;  // depending on what day you want the week to start increment or decrement this value. This should make the week start on a monday

  let days = [];
  for (let i = 0; i < 7; i++) // do this 7 times, once for every day
    days.push(new Date(year, 0, day - dayOffset + i)); // add a new Date object to the array with an offset of i days relative to the first day of the week
  return days;
}
<input type="week" id="week" placeholder="<year>-W<week>" />
<input type="button" id="button" value="click" />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...