当我这样做时:
new Date();
年,日和其他事情都可以,但小时和分钟是错误的。我在计算机上使用 64 位 Windows 7,并且:
Windows time is OK,
Bios Time is OK,
Windows Time Zone is OK,
Windows Time Zone at Regedit is OK
但是,当我在 Java 检查日期对象时(我使用 Java 1.6),区域信息的 id 是美国/加拉加斯,应该是欧洲/伊斯坦布尔
可能有什么问题,有什么想法吗?
PS:我不想将时区作为VM参数传递,我不想使用日历对象,因为我有一些使用Date对象而不是任何东西的库,我只是想了解问题。
我认为这个博客可以帮助你。
引用博客文章来解决问题:
从 Windows XP 控制面板打开日期/时间对话框并应用以下更改之一后,Java API 开始正常工作:
- 手动更改日期/时间,然后更改回原始正确时间。
- 更改时区,然后返回原始时区。
- 从时间服务器请求自动时间更新。
对于记录和来自同一博客:
一些进一步的调查显示:
- 人们抱怨自JRE 1.3以来Sun Java虚拟机上的时区问题错误。 在过去十年中,针对Sun Java虚拟机提交了几个关于错误默认时区的错误报告。
- 几乎所有的报告都被孙以不可复制为由拒绝。
您可以使用日历:
Calendar.getInstance(TimeZone.getTimeZone("GMT"), locale);
日期"取决于区域设置"。您也可以设置区域设置:
Locale.setDefault(...);