java - Linux 中的 TimeZone.getDefault() 因用户而异

标签 java linux timezone

我有一个配置了两个用户的 linux box。我也有这段Java代码:

long time = System.currentTimeMillis();
String millis = Long.toString(time);
Date date = new Date(time);
System.out.println("Current time in milliseconds = " + millis + " => " + date.toString());
TimeZone tz = TimeZone.getDefault();
System.out.println("Current time zone: " + TimeZone.getDefault().getID());

如果我在 bash 上运行 date,我会得到两个用户相同的结果:

用户 1:

$ date
Fri Mar 22 10:02:58 PYST 2013

用户 2:

$ date
Fri Mar 22 10:03:22 PYST 2013

但是,如果我运行我拥有的相同 java 代码:

用户 1:

$ java TimeTest
Current time in milliseconds = 1363957432669 => Fri Mar 22 10:03:52 PYST 2013
Current time zone: America/Asuncion

用户 2:

$ java TimeTest
Current time in milliseconds = 1363957456954 => Fri Mar 22 13:04:16 GMT 2013
Current time zone: GMT

所以我猜这与为每个用户配置 java 的方式有关。

我检查了是否定义了 TZ 环境变量,但是没有为任何用户定义没有 TZ

关于为什么我在同一个 Linux 机器上为不同的用户获得不同的 TimeZone.getDefault() 值有什么想法吗?

虚拟机:

$ java -version
java version "1.6.0_24"
Java(TM) SE Runtime Environment (build 1.6.0_24-b07)
Java HotSpot(TM) 64-Bit Server VM (build 19.1-b02, mixed mode)

发行版:

$ cat /etc/issue
Red Hat Enterprise Linux Server release 5.8 (Tikanga)

最佳答案

这可能与用户的 Locale 有关。

检查这些变量: http://linux.die.net/man/1/locale

关于java - Linux 中的 TimeZone.getDefault() 因用户而异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15571091/

相关文章:

linux - SGID 子文件夹写入权限

c - 为什么 ASLR 似乎不起作用

iphone - 欧洲的 UTC 时区给出的年份是 2014 年而不是 2013 年

java - 如何用Java检测打印机是否连接到您的计算机?

java - 用于第 3 方库的自定义 jackson 反序列化器

java - 如何定义Java类的设计规则?

linux - awk:致命:无法打开文件 `' 进行读取(没有这样的文件或目录)

java - 如何减少ArrayList未使用的容量

php - 使用 MYSQL 将日期和时间从 UTC 转换为服务器上客户端的本地时间

jackson - 如何删除ZoneId?