@ymfront

Как в 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);

Как можно задать время по Московскому часовому поясу, чтобы, например, таймер отсчитывал время до 18:00 26 мая по МСК?
  • Вопрос задан
  • 94 просмотра
Решения вопроса 1
tolmasoft
@tolmasoft
Программист, сервис-инженер
Я привожу свое время в соответствие с часовым поясом по МСК так:

let utc_diff = Math.floor(new Date().getTimezoneOffset() / 60) + 3; //тут получаем разницу в ЧАСАХ между часовым поясом клиента и часовым поясом MSK (+3)

DATE.setTime((TIMESTAMP + 3600 * utc_diff) * 1000);//DATE это наш экземпляр Date, TIMESTAMP - текущее время в UNIX формате в секундах (поэтому в конце * 1000)
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@historydev Куратор тега JavaScript
Острая аллергия на анимешников
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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