Js получение все дни текущей недели
мне нужна помощь в понимании JS
Можно использовать только нативный JS. Нужно получить все числа текущей недели а так же к какому дню неделю он принадлежит. Как на картинке впрочем. Примерный формат получаемых данных:
Пример 1
const array = [
{
day: 'Пн',
date: 28,
},
{
day: 'Вт',
date: 1,
},
{
day: 'Ср',
date: 2,
},
{
day: 'Чт',
date: 3,
},
]....
Пример текущей недели.
const array = [
{
day: 'Пн',
date: 7,
},
{
day: 'Вт',
date: 8,
},
{
day: 'Ср',
date: 9,
},
{
day: 'Чт',
date: 10,
},
].... и так до воскресенья
Так же должны учитываться и следующие дни с нового месяца т.е. в примере 1 это показано что значение для ПН = 28 взятое с прошлого месяца
Ответы (2 шт):
Автор решения: Olegator36
→ Ссылка
Используйте класс Date, его методы getDate(), getDay().
Создайте экземпляр:
let date = new Date();
Создайте класс дня:
class Day(){
day;
date;
constructor(day, date){
this.day = day;
this.date = date;
}
}
Создайте массив экземпляров Day:
let week = new Array();
week.lenght = 7;
Заполните его:
for(let i = 0; i < 7; i++){
week[i] = new Day(date.getDay(), date.getDate());
date.setDate(date.getDate() + i);
}
Готово! Можете записывать в JSON. Но стоит знать, что дни измеряются в цифрах, поэтому получить желаемое можно так:
const dayArray = ['вс', 'пн', 'вт', 'ср', 'чт', 'пт', 'сб'];
const day = dayArray[week[0].day];
const date = week[0].date;
Весь код:
class Day(){
day;
date;
constructor(day, date){
this.day = day;
this.date = date;
}
}
const dayArray = ['вс', 'пн', 'вт', 'ср', 'чт', 'пт', 'сб'];
let date = new Date();
let week = new Array();
week.lenght = 7;
for(let i = 0; i < 7; i++){
week[i] = new Day(date.getDay(), date.getDate());
date.setDate(date.getDate() + i);
}
//Дальше преобразование в JSON
Автор решения: Евгений Колмак
→ Ссылка
const date = new Date();
// Дата
const weekDay = date.getDay();
// День недели
const monthDay = date.getDate();
// День месяца
const month = date.getMonth();
// Номер месяца (индекс)
const getWeek = () => {
const countDayOnMonth = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
// Кол-во дней в каждом месяце
const week = ['Пн', 'Вт', 'Ср', 'Чт', 'Пт', 'Cб', 'Вс'];
let result = [];
// День месяца, понедельника текущей недели
let countMonthDay;
// Проверка что бы всегда начинать выстаривать текущую неделю с понедельника
if (weekDay > 1) {
countMonthDay = monthDay - (weekDay - 1);
} else if (weekDay === 0) {
countMonthDay = monthDay - 6;
} else {
countMonthDay = monthDay;
}
// Постраение итогового массива
for (let i = 0; i < week.length; i++) {
// Если countMonthDay больше кол-ва дней в месяце
// дни начинаются сначала
if ((countMonthDay + i) > countDayOnMonth[month]) {
let count = countDayOnMonth[month] - (countMonthDay + (week.length - 1));
result.push([`day: ${week[i]}`, `date: ${count + i}`]);
} else {
result.push([`day: ${week[i]}`, `date: ${countMonthDay + i}`]);
}
}
return result
}
getWeek();
