vertically-challenged
@vertically-challenged

Почему выводится вчерашняя дата вместо начала сегодняшнего дня? Как вывести дату начала дня?

6368f351a3446549611013.png

dateInterval = [new Date(), new Date()]
      const date = [
        new Date(
          dateInterval[0].getFullYear(),
          dateInterval[0].getMonth(),
          dateInterval[0].getDate(),
          0, 0, 0, 0 
        ),
        new Date(
          dateInterval[1].getFullYear(), 
          dateInterval[1].getMonth(), 
          dateInterval[1].getDate(),
          23,59,59,999 
        )
      ]

// Далее первый элемент массива date выводится как startDate, а второй как endDate
  • Вопрос задан
  • 69 просмотров
Пригласить эксперта
Ответы на вопрос 1
sergiks
@sergiks Куратор тега JavaScript
♬♬
В исходном примере получаются два объекта даты на начало и конец дня 7-го ноября, всё в порядке.
Во временной зоне браузера — в данном случае, Москвы UTC+3.
А выводятся они почему-то во временной зоне UTC.

Когда в Москве полночь, начало 7-го ноября — по UTC ещё 21 час 6-го.

Так что вопрос не создания, а вывода полученных дат.

Вот ещё так можно их создавать, но это ничего
не изменит
const dateInterval = [new Date(), new Date()];

const setTimes = interval =>
  interval
    .map(d => new Date(d))
    .map((d, i) => {
      d.setHours(23 * i);
      d.setMinutes(59 * i);
      d.setSeconds(59 * i);
      d.setMilliseconds(999 * i);
      return d;
    });

setTimes(dateInterval)
// Array [ 
//  Date Mon Nov 07 2022 00:00:00 GMT+0300 (Moscow Standard Time),
//  Date Mon Nov 07 2022 23:59:59 GMT+0300 (Moscow Standard Time)
// ]
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы