legeida
@legeida

Почему .getDay() возвращает неверный день?

По апи (https://openweathermap.org/forecast5) получаю таймстампы на пять дней вперед с разницей по три часа. Хотел массив из 40 объектов отсортировать по дням, но столкнулся с ошибкой, что .getDay() возвращает неправильный день
const date = new Date(1647367200 * 1000)
console.log(date); //2022-03-15T18:00:00.000Z

const date1 = new Date(1647378000 * 1000)
console.log(date1); //2022-03-15T21:00:00.000Z

то есть оба таймстампа - вторник 15 марта, но
const date = new Date(1647367200 * 1000).getDay()
console.log(date); //возвращает 2 - вторник

const date1 = new Date(1647378000 * 1000).getDay()
console.log(date1); //возвращает 3 - среду

С чем это может быть связано?

Если важно, сортирую такой функцией

const daysObj = {}
        
        this.state.list.forEach(e => {
            const date = new Date(e.dt * 1000).getDay()
            if (typeof daysObj[date] == 'undefined')
                daysObj[date] = [];

            daysObj[date].push(e);
        })

        const sortedDays = Object.keys(daysObj).map(function (key) {
            return daysObj[key];
        });

В this.state.list лежит массив list из ответа апи
  • Вопрос задан
  • 130 просмотров
Пригласить эксперта
Ответы на вопрос 2
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
2022-03-15T18:00:00.000Z === 2022-03-15T21:00:00.000MSK
2022-03-15T21:00:00.000Z === 2022-03-16T00:00:00.000MSK

const date = new Date(1647367200 * 1000);
console.log(date); // Date Tue Mar 15 2022 21:00:00 GMT+0300 (Москва, стандартное время)

const date1 = new Date(1647378000 * 1000)
console.log(date1); // Date Wed Mar 16 2022 00:00:00 GMT+0300 (Москва, стандартное время)
Ответ написан
cannibal_corpse
@cannibal_corpse
Верстальщик руками
Он возвращает все правильно.
Так как ты умножаешь на 1000, тебе возвращает разное время в часах - 21 час и 00 часов. 00 часов это следущий день.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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