@jeruthadam
Я крут

Где взять массив с данными дней недели для датапикера?

Хочу сделать свой датапикер. Но откуда берутся данные? Где взять данные типа

const days = [
  {
    year: 2019,
    month: 'january',
    number: 1,
    day: 'monday'
  }
]


Или типо того? Как вообще узнать что в таком месяце 28 дней, в таком 30 или 31? Это как-то генериться из апи времени?
  • Вопрос задан
  • 485 просмотров
Решения вопроса 2
Xuxicheta
@Xuxicheta
инженер
Как вообще узнать что в таком месяце 28 дней, в таком 30 или 31?


месяцы от 1 до 12
/** число дней */
function daysInMonth (month, year) {
    return new Date(year, month, 0).getDate();
}
/** день недели 1 числа месяца */
function getFirstDayOfMonth (month, year) {
    return new Date(year, month, 1).toLocaleString('ru', { weekday: 'long' });
   // если просто номер
   // return new Date(year, month, 1).getDay();
}
Ответ написан
Fzero0
@Fzero0
Вечный студент
function getDaysArray(year, month) {
    var numDaysInMonth, daysInWeek, daysIndex, index, i, l, daysArray;
    numDaysInMonth = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
    daysInWeek = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];
    daysIndex = { 'Sun': 0, 'Mon': 1, 'Tue': 2, 'Wed': 3, 'Thu': 4, 'Fri': 5, 'Sat': 6 };
    index = daysIndex[(new Date(year, month - 1, 1)).toString().split(' ')[0]];
    daysArray = [];
    for (i = 0, l = numDaysInMonth[month - 1]; i < l; i++) {
        daysArray.push({
          year: year,
          month: month,
          number: (i + 1),
          day: daysInWeek[index++]
        })
        if (index == 7) index = 0;
    }
    return daysArray;
}

console.log(getDaysArray(2019, 7))
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
NeiroNx
@NeiroNx
Программист
Дни недели они стандартные, дней в месяцах тоже. Берется точка отсчета и рассчитывается любая дата.
День недели: остаток от деления на 7 общего количества дней.
28 или 29 - по остатку от деления на 4 разницы годов высокосного и теребуемого.
Ответ написан
Комментировать
Тебе нужен массив начиная с заданой даты и заканчивая периодом пикера
https://developer.mozilla.org/en-US/docs/Web/JavaS...
Берешь и заполняешь. Можно еще взять в зависимости moment.js если нужна поддержка разных локалей.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы