Как в JS-таймере задать время по Московскому часовому поясу?
Использую таймер, в котором задано локальное время пользователя:
const deadline = new Date(2024, 2, 20); /* 1 января 2024 (месяцы считаются от 0) */ let timerId = null; function countdownTimer() { const diff = deadline - new Date(); if (diff <= 0) { clearInterval(timerId); } const days = diff > 0 ? Math.floor(diff / 1000 / 60 / 60 / 24) : 0; const hours = diff > 0 ? Math.floor(diff / 1000 / 60 / 60) % 24 : 0; const minutes = diff > 0 ? Math.floor(diff / 1000 / 60) % 60 : 0; const seconds = diff > 0 ? Math.floor(diff / 1000) % 60 : 0; $days.textContent = days < 10 ? '0' + days : days; $hours.textContent = hours < 10 ? '0' + hours : hours; $minutes.textContent = minutes < 10 ? '0' + minutes : minutes; } const $days = document.querySelector('.js-days'); const $hours = document.querySelector('.js-hours'); const $minutes = document.querySelector('.js-minutes'); countdownTimer(); timerId = setInterval(countdownTimer, 1000); |
const deadline = new Date(2024, 2, 20); /* 1 января 2024 (месяцы считаются от 0) */ let timerId = null; function countdownTimer() { const diff = deadline - new Date(); if (diff <= 0) { clearInterval(timerId); } const days = diff > 0 ? Math.floor(diff / 1000 / 60 / 60 / 24) : 0; const hours = diff > 0 ? Math.floor(diff / 1000 / 60 / 60) % 24 : 0; const minutes = diff > 0 ? Math.floor(diff / 1000 / 60) % 60 : 0; const seconds = diff > 0 ? Math.floor(diff / 1000) % 60 : 0; $days.textContent = days < 10 ? '0' + days : days; $hours.textContent = hours < 10 ? '0' + hours : hours; $minutes.textContent = minutes < 10 ? '0' + minutes : minutes; } const $days = document.querySelector('.js-days'); const $hours = document.querySelector('.js-hours'); const $minutes = document.querySelector('.js-minutes'); countdownTimer(); timerId = setInterval(countdownTimer, 1000);
Как можно задать время по Московскому часовому поясу, чтобы, например, таймер отсчитывал время до 18:00 26 мая по МСК?
Дополнительно:
Я привожу свое время в соответствие с часовым поясом по МСК так:
let utc_diff = Math.floor(new Date().getTimezoneOffset() / 60) + 3; //тут получаем разницу в ЧАСАХ между часовым поясом клиента и часовым поясом MSK (+3) DATE.setTime((TIMESTAMP + 3600 * utc_diff) * 1000);//DATE это наш экземпляр Date, TIMESTAMP - текущее время в UNIX формате в секундах (поэтому в конце * 1000) |
let utc_diff = Math.floor(new Date().getTimezoneOffset() / 60) + 3; //тут получаем разницу в ЧАСАХ между часовым поясом клиента и часовым поясом MSK (+3) DATE.setTime((TIMESTAMP + 3600 * utc_diff) * 1000);//DATE это наш экземпляр Date, TIMESTAMP - текущее время в UNIX формате в секундах (поэтому в конце * 1000)
- Дальше думайте сами) Это только пример как я решал свою задачу, в Ваш код это интегрировать тоже не супер сложно
- Владислав Толмачев, спасибо
Ответы:
https://developer.mozilla.org/ru/docs/Web/JavaScri...
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос
Для того чтобы установить время в JS-таймере по Московскому часовому поясу, можно воспользоваться встроенными функциями JavaScript для работы с датами и временем. Вот пример кода, который поможет установить время по Московскому часовому поясу:
// Создаем новый объект Date var date = new Date(); // Устанавливаем временную зону по Московскому часовому поясу (GMT+3) date.setUTCHours(date.getUTCHours() + 3); // Получаем время в формате ЧЧ:ММ:СС var hours = date.getHours(); var minutes = date.getMinutes(); var seconds = date.getSeconds(); // Добавляем ведущий ноль, если значение меньше 10 hours = (hours < 10) ? '0' + hours : hours; minutes = (minutes < 10) ? '0' + minutes : minutes; seconds = (seconds < 10) ? '0' + seconds : seconds; // Выводим время в консоль console.log(hours + ':' + minutes + ':' + seconds);
В этом примере мы создаем объект Date, затем устанавливаем временную зону на GMT+3, что соответствует Московскому часовому поясу. Далее получаем текущее время и выводим его в консоль в формате ЧЧ:ММ:СС. Теперь таймер будет устанавливать время исходя из Московского часового пояса.