如何使用浏览器中的自定义时间来测试客户端与服务器的时间差

我只是写了一小段代码来显示服务器时间在一个网页。目前我只有一台机器,所以我不能测试代码是否正常工作。

有没有办法告诉浏览器使用不同于操作系统配置的时间配置?我已经使用 Firefox 的插件来测试不同的地区,我想知道是否有类似的时间测试选项。

谢谢。

104287 次浏览

不幸的是,JavaScript 只知道当前的时区,因为它是由操作系统设置的。没有任何工具可以让 Date对象在特定的上下文中使用不同的时区。有 一些图书馆做时区转换,但这不会帮助你所要求的。

在 Linux、 Mac osX 和其他 * nIX 系统上,可以设置 TZ环境变量,详情请参阅 本尼迪克特 · 科佩尔的回答

但是,在 Windows 上没有这样的工具。操作系统程序可能会接收到 TZ 环境变量,但那些接收到的程序不一定能正确解释,因为它们不支持 IANA 时区名称。更多关于 给你给你的信息。

根据大众的要求(开玩笑!) ,解释。

谷歌浏览器读取环境变量以获得其运行的时区。显然所有的 Chrome 实例都共享这个值(未经测试)。为了强制设置一个时区,我们需要 a)设置环境变量到我们想要的时区,b) 关闭所有现有的 Chrome 实例,c)打印当前的时区以确认,d)按预期的时区启动 Chrome。

下面的 shell 脚本是用 OS X 测试的,但也可以用于其他操作系统。

export TZ='US/Pacific'


killall Chrome
date
open /Applications/Google\ Chrome.app

您最好保持计算机时区完好无损,并更改服务器设置以反映您前面或后面的时区。这通常很容易做到,具体取决于您使用的服务器。

为单独的 Chrome 用户配置文件创建一个新的空目录

mkdir ~/chrome-profile

您可以指定 TZ环境变量,在列 TZ 中可以看到有效的时区,例如 给你

要启动 Chrome,使用以下命令:

  • 用于 Mac OS X: TZ='US/Pacific' open -na "Google Chrome" --args "--user-data-dir=$HOME/chrome-profile"
  • Linux: TZ='US/Pacific' google-chrome "--user-data-dir=$HOME/chrome-profile"

老问题了,但我也遇到过类似的问题,不管怎样我都会解决的。

我所做的就是在一台虚拟机中运行我的服务器,将网络设置设置为桥接,这样我就可以作为客户端轻松地从我的主机操作系统访问服务器。

然后我改变了 VM 中的时间设置,这样客户机和服务器之间就有了我想要的差异。

Chrome 似乎只要你在 Windows 中更改它,它就会立即更新它的 TimeZone。Firefox 似乎在启动时存储系统的时区值。

使用 VisualStudio,看起来你可以完全改变这个技巧。似乎只有在第一次启动调试进程时才读取时区。在我的例子中,我所做的是将时区设置为,例如,东部标准时间。启动 VisualStudio 调试器。然后,我将时区更改为,例如,太平洋标准时间。此时服务器仍在东部时区,而我的浏览器在太平洋时区。现在我可以很好地测试客户端浏览器的行为了。

如果您想在日本测试客户端,那么只需更新 TimeZone,浏览器就会跟随它。您的服务器时区不会改变。也是 仅仅改变时间(相对于时区)是不起作用的。

这是一个简单的方法,我试图改变时区和测试它的 Windows 7 ^ 我用 tzutil

tzutil /s "Eastern Standard Time" 并保存到适当的 .bat文件,如 Eastern_Standard_Time_zone.bat和使用 default_time_zone.bat包含您的原始系统时区,以获得它在完成测试后返回。这会瞬间改变你的时区。 参考文献

也许对某些人有帮助,你可以通过以下步骤改变 Windows10的时区:

  1. 打开设置。
  2. 点击时间和语言。
  3. 点击日期和时间。
  4. 根据需要改变时区。

附注: 根据@Oscar Acevedo 的评论,这个答案并不完全正确,它适合测试不同的时区。

有很多时区扩展可以在浏览器级别欺骗。我目前正在使用 enter image description here

添加后点击选项的扩展和检查 enter image description here

一旦完成,转到任何网站并打开开发工具,通过执行以下命令进行检查

new Date().toLocaleTimeString()

如果您使用的是 再现性,我建议您使用 e2e 环境,即可以自动化浏览器并允许操作其时区的工具。

这样你就不必操纵系统的时区,你可以添加测试,特别是使用不同的时区,也就是说,你可以在不同的时区测试你的代码。

两个最近流行的浏览器自动化库,木偶师剧作家明确允许设置时区。使用 Playwright,你可以自动为所有主流的 常青树浏览器(Safari,Firefox 和 Chrome/ChromeEdge)设置时区:

在2021年,您不需要更改操作系统变量或扩展就可以做到这一点。

Chrome 开发工具 > 汉堡包菜单 > 更多工具 > 传感器

在位置部分选择你的位置或者给它一个时区 ID (例如,美国/芝加哥,美国/纽约) enter image description here