首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何模拟浏览器的时区?

如何模拟浏览器的时区?
EN

Stack Overflow用户
提问于 2012-09-01 02:23:51
回答 2查看 24.9K关注 0票数 14

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

代码语言:javascript
复制
var offset = new Date().getTimezoneOffset();

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-07-13 17:03:14

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

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

更好的方法是覆盖Date原型上的getTimezoneOffset方法,这样Date的所有实例都具有被覆盖的方法。

代码语言:javascript
复制
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
票数 33
EN

Stack Overflow用户

发布于 2012-09-01 02:26:57

为此,您可以使用一个函数。

代码语言:javascript
复制
function getTimezoneOffset() {
  if (DEBUG) {
    return 600; // for Australian Eastern Standard Time
  }

  return new Date().getTimezoneOffset();
}

其中,DEBUG是前面设置的一个变量,用于确定您是否正在测试。

然后在整个代码中使用该函数,而不是Date对象上的方法。

票数 -8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12220717

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档