【发布时间】:2017-03-08 21:27:27
【问题描述】:
我有以下用于倒数计时器的 javascript 代码:
var end = new Date('10/26/2016 4:00 PM');
var _second = 1000;
var _minute = _second * 60;
var _hour = _minute * 60;
var _day = _hour * 24;
var timer;
function showRemaining() {
var now = new Date();
var distance = end - now;
if (distance < 0) {
clearInterval(timer);
document.getElementById('countdown').innerHTML = 'EXPIRED!';
return;
}
var days = Math.floor(distance / _day);
var hours = Math.floor((distance % _day) / _hour);
var minutes = Math.floor((distance % _hour) / _minute);
var seconds = Math.floor((distance % _minute) / _second);
document.getElementById('countdown').innerHTML = minutes + 'mins ' + seconds + 'secs';
}
timer = setInterval(showRemaining, 1000);
这可行,但问题是我需要倒数计时器在 GMT/UTC 时间上工作,因为我在站点/服务器上的所有时间都以这种方式存储。
目前,此倒数计时器正在使用用户本地时间进行now 设置。此脚本将在全球范围内访问,因此我无法使用本地时区,并且必须为 GMT/UTC 格式。
也就是说,截至发帖时,当前的 GMT 时间是 13:17,但如果我在英国访问脚本,则本地时间是 14:17,因此倒计时结束 1 小时。
我知道 javascript 有
toUTCString()
方法但是当我尝试调用它时
function showRemaining() {
var now = new Date().toUTCString();
...
结果如下:
NaNmins NaNsecs
jsfiddle 在这里 => https://jsfiddle.net/pzbz35q1/1/
【问题讨论】:
-
没有“本地”日期对象,它们都是 UTC。字符串“10/26/2016 4:00 PM”没有时区偏移量,因此如果解析为 Date 将代表具有不同时区偏移量的每个主机的不同时刻。
标签: javascript date countdown utc gmt