我在网站上有一个倒数计时器(它充当同一天发货倒计时器,因此访问者知道他们是否下了订单,如果他们今天发货)。基本上,计时器在星期一至星期五倒数至下午5点,然后以“0”(午夜,24小时)重新开始,这一切都正常。将JavaScript日期()转换为UTC和抵消时间
然后我意识到,因为时间是客户端(JavaScript)的游客在PST时区会看到一个错误的时间相比,他们应该看到我们的(店东)。
不幸的是我不能使用PHP或任何服务器端从服务器获取时间,所以它必须是JavaScript的(转换为UTC和偏移量)。
我做得不对的变量,据我所知道的,可能更多的,可能有人请告诉我,我究竟错设置? (它不会在我的控制台中显示任何错误)。
if (document.getElementById('countdownTimer')) {
pad = function(n, len) { // leading 0's
var s = n.toString();
return (new Array((len - s.length + 1)).join('0')) + s;
};
function calcTime(offset) {
// create Date object for current location
var d = new Date();
// convert to msec
// add local time zone offset
// get UTC time in msec
utc = d.getTime() + (d.getTimezoneOffset() * 60000);
offset = -5.0;
var now = utc + (3600000*offset);
function countDown() {
//var now = new Date();
if ((now.getDay() >= 1) && (now.getDay() <= 5)) { // Monday to Friday only
var target = 17; // 15:00hrs is the cut-off point
if (now.getHours() < target) { // don't do anything if we're past the cut-off point
var hrs = (target - 1) - now.getHours();
if (hrs < 0) hrs = 0;
var mins = 59 - now.getMinutes();
if (mins < 0) mins = 0;
var secs = 59 - now.getSeconds();
if (secs < 0) secs = 0;
var str = '<span id="day">00</span><span id="hour">' + pad(hrs, 2) + '</span><span id="minute">' + pad(mins, 2) + '</span><span id="second">' + pad(secs, 2) + '</span>';
document.getElementById('countdownTimer').innerHTML = str;
}
}
}
var timerRunning = setInterval('countDown()', 1000);
}
}
大多数服务器发出ajax HEAD请求可以获取的Date标头。你也可以从5 * 3600000中减去它们的偏移量以得到他们的时间与E.S.T.之间的差值。 – dandavis
@dandavis这是一个很大的商业托管网站,所以我不确定他们是如何配置的。我知道他们的API不会返回商店时区。 –
您可以转到javascript在Chrome上运行的页面,按F11,然后按F5,单击网络选项卡,单击第一个输入行,然后单击标题以看看日期是否在其中。如果是的话,那么谷歌“阿贾克斯头标题”。 – dandavis