5

2 人のユーザーが構成された Linux ボックスがあります。次の 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

TimeZone.getDefault()同じ Linux ボックスでユーザーごとに異なる値が得られるのはなぜですか?

JVM:

$ 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)
4

2 に答える 2

1

おそらく、ユーザーの Locale と関係があります。

これらの変数を確認してください: http://linux.die.net/man/1/locale

于 2013-03-22T13:14:15.017 に答える