Как я могу получить каждую субботу 2020 и 2021 годов в формате «Суббота, дд.мм.ГГГГ»? - PullRequest
0 голосов
/ 18 февраля 2020

Я хочу добавить все субботы 2020/2021 в объект, подобный следующему:

saturdays = {
   "Saturday, 22.02.2020" : "Saturday, 22.02.2020" ,
   "Saturday, 29.02.2020" : "Saturday, 29.02.2020"
}

Ответы [ 2 ]

0 голосов
/ 19 февраля 2020

1) Сначала узнать количество дней в году (daysInYear метод)
2) Узнать дату первой субботы (firstSatDate метод)
3) Go больше для l oop из с первой субботы до конца года и создайте формат требования строки даты.

const daysInYear = year =>
  (new Date(year + 1, 0, 1) - new Date(year, 0, 1)) / (24 * 60 * 60 * 1000);

const firstSatDate = year => {
  const week_day = new Date(year, 0, 1).getDay();
  const satDate = new Date(year, 0, 7 - week_day);
  return satDate.getDate();
};

const getSaturdays = year => {
  const yearDays = daysInYear(year);
  const first = firstSatDate(year);
  const saturdays = {};
  for (let day = first; day <= yearDays; day = day + 7) {
    const date = new Date(year, 0, day);
    const day_str = String(date.getDate()).padStart(2, '0');
    const month_str = String(date.getMonth() + 1).padStart(2, '0');
    const date_str = `Saturday, ${day_str}.${month_str}.${date.getFullYear()}`;
    saturdays[date_str] = date_str;
  }
  return saturdays;
};

console.log(getSaturdays(2020));
console.log(getSaturdays(2021));
0 голосов
/ 18 февраля 2020

Это необычный формат (имя совпадает со значением), и объекты не упорядочены, поэтому не ожидайте вернуть их в каком-либо определенном порядке. , , но это довольно тривиально, если хочешь. , ,

    saturdays = {};

    function loadSaturdays(startYear, endYear) {
        const SATURDAY = 6;
        let start = new Date("01/01/" + startYear);
        let end = new Date("12/31/" + endYear);
        var dateOptions = {weekday: 'long', year: 'numeric', month: 'numeric', day: 'numeric'};

        var current = new Date(start);
        while (current <= end) {
            if (SATURDAY === current.getDay()) {
                let newSaturday = "\"" + current.toLocaleString('en-GB', dateOptions).replace(/\//gi, '.') + "\"";
                // if you want to see the individual ones as you are building the object
                // console.log(newSaturday);
                saturdays[newSaturday] = newSaturday;
            }
            current = new Date(current.setDate(current.getDate() + 1));
        }
    }

    loadSaturdays("2020", "2021");

    // if you want to see the entire object
    //console.log(saturdays);

    // objects are not ordered but they are all there
    for (saturday in saturdays) {
        console.log(saturday);
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...