javascript - 如何模拟浏览器的时区?

标签 javascript google-chrome browser mocking timezone

<分区>

我想测试网站中的位置功能,为了进行此测试,我需要尝试不同的时区。我使用 javascript 代码获取时区,调用以下函数:

var offset = new Date().getTimezoneOffset();

现在这个函数返回给我 180 因为我在阿根廷,我需要测试不同的时区。有人知道怎么做吗? 非常感谢!!

最佳答案

接受的答案并没有真正模拟 Date.getTimezoneOffset 方法,而是希望您使用具有相同名称的不同方法。

它不适用于 Date 对象本身,正如 Carl Meyer 指出的那样,它不适用于像 MomentJS 这样的库。

更好的方法是覆盖 Date 原型(prototype)上的 getTimezoneOffset 方法,这样 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

关于javascript - 如何模拟浏览器的时区?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12220717/

相关文章:

javascript - 如何获取用户访问某个页面的次数?

javascript - chrome中如何获取当前事件元素?

google-chrome - 使用 ffmpeg 编码的视频无法在 Chrome 中播放

javascript - 使用 JavaScript 操作 session 历史记录

javascript - 当内容可见时,jquery 在单击时停止动画

javascript - 内容脚本(页面模块)和弹出窗口(面板)之间的通信

java - 我们如何在不打开浏览器的情况下在我们的android应用程序中查看网页?

javascript - 在 Firefox 和 IE 中禁用/禁用后退按钮的替代方法

javascript - 如何在主干 View 之间交换模型

javascript - Chrome 中的 RotateY 无法正常工作?