【发布时间】:2026-02-21 01:30:02
【问题描述】:
我刚刚写了一小段代码来显示网页中的服务器时间。目前我只有一台机器,所以我无法测试代码是否正常工作。
有没有办法告诉浏览器使用不同于操作系统中配置的时间配置?我已经使用 Firefox 的插件来测试不同的语言环境,不知道是否有类似的时间测试选项。
谢谢。
【问题讨论】:
-
Chrome 现在有这个:*.com/a/60008052/3370010
我刚刚写了一小段代码来显示网页中的服务器时间。目前我只有一台机器,所以我无法测试代码是否正常工作。
有没有办法告诉浏览器使用不同于操作系统中配置的时间配置?我已经使用 Firefox 的插件来测试不同的语言环境,不知道是否有类似的时间测试选项。
谢谢。
【问题讨论】:
为单独的 Chrome 用户配置文件创建一个新的空目录。例如。与
mkdir ~/chrome-profile
您指定TZ 环境变量。您可以在 TZ 列中查看有效时区,例如 here。
要启动 Chrome,请使用以下命令:
TZ='US/Pacific' open -na "Google Chrome" --args "--user-data-dir=$HOME/chrome-profile"
TZ='US/Pacific' google-chrome "--user-data-dir=$HOME/chrome-profile"
【讨论】:
chrome-profile 目录,以便为我的需要提供更具体的名称。
TZ='US/Pacific' open -na "Google Chrome" --args。完美运行
不幸的是,JavaScript 只知道当前时区,因为它是由操作系统设置的。没有工具可以让Date 对象在特定上下文中使用不同的时区。有some libraries 可以进行时区转换,但这对您的要求没有帮助。
在 Linux、Mac OSX 和其他 *NIX 系统上,您可以设置 TZ 环境变量。详情请见Benedikt Köppel's answer。
但是,Windows 上没有此功能。 一些 Windows 程序可能会使用 TZ 环境变量,但那些这样做的程序不一定会正确解释它,因为它们没有连接到支持 IANA 时区名称。更多关于 here 和 here.
【讨论】:
new Date()。更改您的时区。再次在控制台输入new Date()。每个日期都会显示您在更改之前和之后设置的任何时区。
应大众需求(开玩笑!),解释。
Google Chrome 读取环境变量以获取其运行所在的时区。显然所有 Chrome 实例共享该值(未经测试)。为了强制一个时区,我们需要 a) 将环境变量设置为我们想要的时区,b) 杀死所有现有的 Chrome 实例,c) 打印当前时区以确认,以及 d)使用预期的时区启动 Chrome。
以下 shell 脚本已在 OS X 上测试过,但也适用于其他人。
export TZ='US/Pacific'
killall Chrome
date
open /Applications/Google\ Chrome.app
【讨论】:
killall 是危险的家伙。我将编辑答案以添加一些警告。
killallin bold 会解释为什么它很危险,甚至警告人们它很危险......?
Chrome 似乎会在您在 Windows 中更改其 TimeZone 时立即更新它。 Firefox 似乎在启动时存储了系统的时区值。
使用 Visual Studio,您似乎可以扭转乾坤。似乎只有在您第一次启动调试过程时才会读取时区。因此,就我而言,我所做的是将 TimeZone 设置为例如东部标准时间。启动 Visual Studio 调试器。然后,我将时区更改为例如太平洋标准时间。此时服务器仍处于东部时区,而我的浏览器处于太平洋时区。现在我可以很好地测试客户端浏览器的行为了。
如果您想在日本测试客户端,只需更新您的 TimeZone,浏览器就会跟随它。 只要您不重新启动调试过程,您的服务器时区就不会改变。此外只是更改时间(而不是时区)也不起作用。
【讨论】:
老问题,但我遇到了类似的问题,无论如何我都会解决问题。
我所做的是在虚拟机中运行我的服务器,将网络设置设置为桥接,这样我就可以轻松地从我的主机操作系统作为客户端访问服务器。
然后我更改了 VM 中的时间设置,以便在客户端和服务器之间有任何我想要的差异。
【讨论】:
也许它会帮助某人。您可以使用以下步骤更改 Windows 10 的时区:
附:根据@Oscar Acevedo 的评论,这个答案并不完全正确。适合测试不同时区。
【讨论】:
这是我尝试更改时区并针对 Windows 7 进行测试的一种简单方法 ^
我用tzutil
tzutil /s "Eastern Standard Time"
并将其保存到合适的.bat 文件,例如Eastern_Standard_Time_zone.bat 并使用default_time_zone.bat 在您的原始系统时区中完成测试后将其取回。这会在眨眼间改变你的时区。
reference
【讨论】:
如果您喜欢再现性,我建议您使用 e2e 环境,即可以自动化浏览器并允许操纵其时区的工具。
这样您就不必摆弄系统时区,并且可以添加测试,专门使用不同的时区,即您可以在不同的时区测试您的代码。
两个最新流行的浏览器自动化库Puppeteer 和Playwright 明确允许设置时区。使用 Playwright,您可以自动为所有主要 evergreen 浏览器(Safari、Firefox 和 Chrome / ChromeEdge)设置时区:
【讨论】:
您最好保持计算机时区不变并更改服务器设置以反映您前面或后面的时区。这通常很容易做到,具体取决于您使用的服务器。
【讨论】: