#javascript #datetime #time #gmt
Вопрос:
Поэтому я создал таймер обратного отсчета в JS, но понял, что на сайте моих клиентов указано время по Гринвичу 2, что означает, что счетчик не ведет обратный отсчет до правильного времени.
Вот мой JS и скриншот счетчика ниже.
$('.countdownListTimer').each(function (i, obj) {
var startTime = $(this).attr("data-startTime");
var today = new Date();
const diffTime = Math.abs(startTime - today);
const diffDays = Math.ceil(diffTime / (1000 * 60 * 60 * 24));
var countdownListTimerId = $(this).attr("data-id");
var countDownDate = new Date(startTime).getTime();
var x = setInterval(function () {
var now = new Date().getTime();
var distance = countDownDate - now;
var days = Math.floor(distance / (1000 * 60 * 60 * 24));
var hours = Math.floor((distance % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
var minutes = Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60));
//var seconds = Math.floor((distance % (1000 * 60)) / 1000);
$("#" countdownListTimerId).html(days "d " hours "h " minutes "m ");
if (days < 1) {
$("#" countdownListTimerId).html(hours "h " minutes "m "/* seconds "s "*/);
}
if (hours < 1) {
$("#" countdownListTimerId).html(minutes "m "/* seconds "s "*/);
}
//if (minutes < 1) {
// $("#" countdownTimerId).html(seconds "s ");
//}
if (distance < 1) {
clearInterval(x);
$("#" countdownListTimerId).html("Ended");
}
}, 1000);
});
Комментарии:
1. Каков формат атрибута «data-startTime»?
Ответ №1:
Вы должны убедиться, что значение countDownDate
рассчитывается с указанной даты UTC. Поэтому либо сделайте атрибут «время начала данных» строкой, указывающей дату/время UTC, либо интерпретируйте его как таковой при создании объекта даты. Первая идея, вероятно, проще:
Например, атрибут может быть:
data-startTime="2021-05-19T20:00:00.000Z"
Итак, повторюсь, это будет целевое время в часовом поясе UTC.