我寫了下面的程序:的Java歐洲/明斯克時區問題
import sun.security.action.GetPropertyAction;
import java.security.AccessController;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.TimeZone;
public class Main {
public static void main(String[] args) {
System.out.println(new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss Z").format(new Date()));
System.out.println(TimeZone.getDefault().getDisplayName());
String country =AccessController.doPrivileged(new GetPropertyAction("user.country"));
System.out.println(country);
String javaHome=AccessController.doPrivileged(new GetPropertyAction("java.home"));
System.out.println(javaHome);
}
}
然後我設置GMT + 3歐洲/明斯克時區我的電腦上。
如果我運行這個程序與JDK6最新版本,我看到它讓我發現,我在Java的時區爲委內瑞拉標準時間GMT + 4.30 如果我上最新的JDK7版本運行它,它讓我看到巴西的時區GMT-3 , 如果我在最新的JDK8發行版上運行它,它會顯示我莫斯科時間爲GMT + 3。如果我在我的Win7計算機上選擇伏爾加格勒格林威治標準時間+3時區,該程序可以在所有版本的Java中正確運行。那麼這是JDK與明斯克時區的錯誤嗎?
獲取顯示的時區名稱的輸出可以隨JDK更改。請打印'TimeZone.getDefault()'的id(通過方法'getID()'),以啓用更好的分析,因爲顯示的區域名稱往往是矛盾的。並且還請顯示您在計算機上如何具體設置明斯克時區。你只是使用它的顯示名稱 - 或更好的ID? –