【问题标题】:Simulate different timezone between browser and server for local test [duplicate]模拟浏览器和服务器之间的不同时区以进行本地测试
【发布时间】:2016-06-25 06:24:20
【问题描述】:

我开发了一个 Web 应用程序(使用 java),其中我有一个需要保存用户时间签名的业务规则。但是我需要保存3次:本地时区用户、全球时区和服务器时区。

我的问题是测试用户的本地时区。任何人都知道我如何模拟 (仅用于在本地机器上进行测试)一个与浏览器或服务器不同的时区,让我模拟这个测试?

注意:我想我会创建一个虚拟机并在其上托管我的应用程序,然后进行测试,它只需要更改虚拟机的时区。所以这个过程需要很长时间,我想知道有没有简单的方法。

【问题讨论】:

标签: javascript testing browser timezone


【解决方案1】:

将您计算机的时区更改为用户的时区并重新启动您的浏览器。

【讨论】:

  • 我在本地环境中执行我的应用程序,所以服务器时区 = 客户端时区...但是,如果我在时钟窗口中更改时间并且不重新启动浏览器,时间会有所不同,对吗?
  • 您是否在本地计算机上运行您的服务器?如果是,您使用的是哪个服务器?
  • 是的,我使用的是 apache tomcat
  • 如果您希望服务器使用计算机的时区,请重新启动服务器
【解决方案2】:

我发现我可以通过 tomcat 参数手动设置 GMT。 简单:

-Duser.timezone=GMT+13

由于我需要模拟一个很远的区域时间,我设置了 GMT + 13。然后我的服务器得到了 GMT + 13,我的客户端(浏览器)使用了 GMT-3

【讨论】:

  • @MattJohnson,看看我的回答。你同意吗?
  • 我通常不鼓励使用固定时区偏移量。世界远比这复杂得多。请务必阅读the timezone tag wiki
  • 我还认为,虽然这可以实现您对 Java/Tomcat 的目标 - 它并不能解决您提出的问题(更改 浏览器 的时区)。正如我在原始问题 cmets 中提到的那样,如果您的代码在传入此参数时表现出任何不同,那么您在代码中错误地使用了时间 API。不要向服务器询问它的当地时间 - 这应该是无关紧要的。
  • @MattJohnson 我明白了,你的解释很好。我的答案仅适用于本地测试。当我的应用程序在生产服务器中,并且我的客户端正在签署测试并且该客户在莫桑比克(时区 UTC + 2)和我的服务器在巴西(UTC-3)时,我有必要保存客户端签署的两次测试。我没有在生产服务器中设置 -Duser.timezone=GMT
猜你喜欢
  • 2011-03-12
  • 2017-12-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-06
  • 2012-08-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多