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 解决方法
问题是由于直到2014年没有专门的欧洲/明斯克时区(至少在Windows中).
它出现在俄罗斯和白俄罗斯在2011和2014之后几个DST和时区法律的变化之后. 请参阅相应的JDK-8017129和JDK-8067758问题. 在最新的Java版本中已经考虑了这些更改. 操作系统时区设置也必须更新.在Windows情况下,这意味着您需要安装KB2570791和至少KB2998527补丁. 还有一种替代解决方法,不需要上面提到的修补. 但是,切换到最新的Java 8也将从稳定性和性能改进中受益. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |