Задать вопрос

Почему Date.setHours меняет дату на месяцы?

Дебажу, значит, фичу, и замечаю странное поведение `setHours` \ `setUTCHours`. Имеется timestamp 29 августа 2020, после выполнения следующего кода результат почему-то становится аж 2019 года.
const timestamp = 1595980800; // 07/29/2020 @ 12:00am (UTC)

const getStartDay = date => {
  const instance = new Date(date);
  instance.setUTCHours(0, 0, 0, 0);
  return instance;
}

const startDay = getStartDay(timestamp);

console.log(startDay.getTime()); // 04/14/2019 @ 12:00am (UTC)

Что я упустил? Почему так? И ведь вопрос наверняка глупый, но вообще не могу взять толк, в чем проблема. По докам не должно такого быть в принципе. Создал фиддл для демонстрации.
  • Вопрос задан
  • 57 просмотров
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 1
@inzeppelin
Мне кажется у вас маловато знаков в timestamp. Тут нужно еще 3 нуля: 1595980800 > 1595980800000, чтобы время было в миллисекундах.

Да и вообще много других странностей. У вас время изначально такое: Wed, 29 Jul 2020 00:00:00 GMT
А потом вы устанавливаете его на 00:00:00:00, что не приводит ни к каким изменениям.

Вот тут посмотрите:

https://jsfiddle.net/oh3Ltpqr/
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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