Как в JS-таймере задать время по Московскому часовому поясу?

Ссылка скопирована
1 ответ

Использую таймер, в котором задано локальное время пользователя:

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...

Нужно решить такую задачу?

Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

Заказать помощь
Лучший ответ
1
Стас DB Ответ

Для того чтобы установить время в 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 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, что соответствует Московскому часовому поясу. Далее получаем текущее время и выводим его в консоль в формате ЧЧ:ММ:СС. Теперь таймер будет устанавливать время исходя из Московского часового пояса.

Другие ответы (0)

Пока нет других ответов. Будьте первым, кто поможет автору.

Ответить на вопрос

комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Вам также может быть интересно