【发布时间】:2015-09-29 16:40:23
【问题描述】:
我目前正在寻找一种创造性的方法来确定 java 中的 user.timezone 是否被命令行参数或其他一些自定义配置更改。所以从技术上讲,我正在寻找一种解决方案,如何确定计算机的实际时区(如果这可能的话)。
非常感谢任何帮助。
谢谢,
【问题讨论】:
-
如果我在 LHR 登上飞机,笔记本设置为当地时间,然后在 LAX 离开飞机,那么“真正的 TZ”是什么???
-
“真正的 TZ”是指您计算机上的设置。例如当您的实际计算机时间设置为 America/Los_Angeles 但使用 -Duser.timezone=UTC 运行 java 时,我想获取 America/Los_Angeles。
-
启动后修改时区有多种方法。设置 TZ 是一种方法,您可以通过运行具有适当净化环境的 (Java) 子进程来绕过它(参见 java.lang.ProcessBuilder)。但是,如果特权用户(在 Linux 上)入侵了
/etc/timezone,您将无法看到或绕过它。原始时区和被破解的时区都不能是“真实的”时区......