问题描述
所以我在 JS 中创建了一个倒数计时器,但意识到我的客户网站在时间列表上有 GMT +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);
});
screenshot of the site counter and time its reading from
解决方法
您应该确保 countDownDate
是从 UTC 指定日期开始计算的。因此,要么将“data-startTime”属性设为指定 UTC 日期/时间的字符串,要么在创建日期对象时将其解释。第一个想法可能更简单:
例如属性可以是:
data-startTime="2021-05-19T20:00:00.000Z"
所以,重复一遍,这将是 UTC 时区中的目标时间。