@AlexandraWeather

Почему при использовании .toUTCString() у меня получается не то время?

мне нужно сделать так, чтобы попап показывался не чаще раза в сутки. решила использовать ограниченные по времени куки. поставила ограничение на время жизни таймера, но получается так, что время сначала определяется верно, а потом, при попытке преобразовать его в нужный формат, время меняется на неподходящее
в чем может быть причина?
вот что говорит консоль

Tue Dec 19 2023 15:15:27 GMT+0600 (Восточный Казахстан)
popup.js:22 Tue, 19 Dec 2023 09:15:27 GMT


вот как выглядит код
const showPopup = (evt) => {
    const timer = () => {
        let date = new Date(Date.now() + restPopupTime);
        console.log(date);
        date = date.toUTCString();
        console.log(date);
        return date;
    }    
    if (!getCookie('popup1')) {
        popup1.classList.add('show');
        popup1.addEventListener('click', hidePopup);
        document.cookie = 'popup1=shown; expires=' + timer();
        console.log(document.cookie)
    } else if (!getCookie('popup2')) {
        popup2.classList.add('show');
        popup2.addEventListener('click', hidePopup);
        document.cookie = 'popup2=shown; expires=' + timer();
        console.log(document.cookie)
    }
}
  • Вопрос задан
  • 74 просмотра
Решения вопроса 1
Mike_Ro
@Mike_Ro Куратор тега JavaScript
Python, JS, WordPress, SEO, Bots, Adversting
Tue Dec 19 2023 15:15:27 GMT+0600 (Восточный Казахстан)
popup.js:22 Tue, 19 Dec 2023 09:15:27 GMT

Все верно он отображает, а отображает он это с учетом смещения на 6 часов.

Вот пример вычисления настоящей и UTC даты, а так же настоящего времени (nowTime()):
const date = new Date();
const nowTime = () => {
  const hours = date.getHours().toString().padStart(2, '0');
  const minutes = date.getMinutes().toString().padStart(2, '0');
  const seconds = date.getSeconds().toString().padStart(2, '0');

  return `${hours}:${minutes}:${seconds}`
}

console.log(`Local date: ${date}`);
console.log(`Local time: ${nowTime()}`);

console.log(`UTC date: ${date.toUTCString()}`);
console.log(`Offset hours: ${date.getTimezoneOffset() / 60}`);

// Local date: Wed Dec 20 2023 09:24:43 GMT+0300 (Москва, стандартное время)
// Local time: 09:24:43
// UTC date: Wed, 20 Dec 2023 06:24:43 GMT
// Offset hours: -3
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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