我想测试网站中的位置功能,要进行此测试,我需要尝试不同的时区。我使用 javascript 代码获取时区,调用以下函数:
var offset = new Date().getTimezoneOffset();
现在这个函数返回给我 180 因为我在阿根廷,我需要使用不同的时区进行测试。有人知道怎么做吗?非常感谢!!
我想测试网站中的位置功能,要进行此测试,我需要尝试不同的时区。我使用 javascript 代码获取时区,调用以下函数:
var offset = new Date().getTimezoneOffset();
现在这个函数返回给我 180 因为我在阿根廷,我需要使用不同的时区进行测试。有人知道怎么做吗?非常感谢!!
接受的答案并没有真正模拟该Date.getTimezoneOffset
方法,而是希望您使用具有相同名称的不同方法。
它不适用于 Date 对象本身,正如 Carl Meyer 指出的那样,它不适用于 MomentJS 之类的库。
一个更好的方法是覆盖原型getTimezoneOffset
上的方法Date
,让所有的实例Date
都有被覆盖的方法。
d = new Date(); // Mon Jul 13 2015 10:58:12 GMT+0200 (CEST)
alert(d.getTimezoneOffset()); // -120, My local "real" timezone.
// Save the original method.
var getTimezoneOffset = Date.prototype.getTimezoneOffset;
Date.prototype.getTimezoneOffset = function () {
return 160;
}
// Now Date objects will have the mocked timezone offset
alert(d.getTimezoneOffset()); // 160, The mocked timezone.
// Now restore the method to its original version
Date.prototype.getTimezoneOffset = getTimezoneOffset;
alert(d.getTimezoneOffset()); // -120
你可以为此使用一个函数。
function getTimezoneOffset() {
if (DEBUG) {
return 600; // for Australian Eastern Standard Time
}
return new Date().getTimezoneOffset();
}
之前设置的变量在哪里DEBUG
确定您是否正在测试。
然后在整个代码中使用该函数,而不是 Date 对象上的方法。