【发布时间】:2020-01-07 23:57:04
【问题描述】:
我的 java 应用程序在 Ubuntu 上运行,我有一个用例需要从 java 更改操作系统时区。我试图通过使用 Joda 和 Java.util.Timezone 来实现这一点。但看起来,他们只是改变了 jvm 时区,而不是实际的操作系统。
所以,在服务器/机器重新启动时,我正在使用旧时区。有什么方法可以从 java 实现,或者我需要依赖 Runtime.getRuntime().exec("os commands")?
注意:在这种情况下,时区将是用户特定的(用户将定义它自己的时区)。不同的实例可能有不同的时区。
【问题讨论】:
-
永久更改操作系统时区需要提升权限(特别是在 Linux 上,对
/etc/localtime的写入权限)。除非您的程序以 root 权限执行,否则您无法仅从 Java 中执行此操作。 -
程序有这个权限。
-
如果您正在运行具有提升权限的 Java 程序,那可能是个坏主意。你审核了吗?如果这是产品代码,您是否考虑过您的客户可能(应该)想要审核它?
-
是的,如果您确定这是个好主意,您需要依靠
Runtime.getRuntime().exec("os commands")或其他方式来操作操作系统。 -
@OleV.V.:不,你没有(至少对于 Linux 来说不是)。看我的回答。