Добавление времени к дате Javascript.Теперь

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