Java new Date()获取错误的当前时间
当我这样做时:Java new Date()获取错误的当前时间,java,date,timezone,Java,Date,Timezone,当我这样做时: 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上检查date对象时(我使用Java1.6),区域信息的id是America/Caracas,应该是Europe/Istanbul 有什么问题吗,
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上检查date对象时(我使用Java1.6),区域信息的id是America/Caracas,应该是Europe/Istanbul
有什么问题吗,有什么想法吗
PS:我不想将时区作为VM参数传递,我不想使用日历对象,因为我有一些库使用日期对象而不是任何对象,我只想了解这个问题 您可以使用日历:
Calendar.getInstance(TimeZone.getTimeZone("GMT"), locale);
日期取决于“区域设置”。您也可以设置区域设置:
Locale.setDefault(...);
我想这对你有帮助
引用博文解决问题:
从Windows XP控制面板打开“日期/时间”对话框并应用以下更改之一后,Java API开始正常工作:
- 手动更改日期/时间,然后更改回原始的正确时间
- 改变时区,然后回到原来的时区
- 正在从时间服务器请求自动时间更新
- 自JRE 1.3以来,人们抱怨Sun Java虚拟机上存在错误的时区问题。 在过去十年中,针对Sun Java虚拟机提交了几份错误报告,涉及错误的默认时区李>
- 几乎所有的报告都被Sun公司拒绝,认为无法生产
我已经换到了其他时区,而且效果不错。我已经把我的时区设置成了别的地方,而不是伊斯坦布尔(同一时区的另一个地方),而且很管用。但是为什么它对伊斯坦布尔不起作用?Windows regedit说土耳其是标准时间(或类似的时间),但它应该是Java日期的欧洲/伊斯坦布尔。也许Java无法将土耳其标准时间映射到欧洲/伊斯坦布尔?事实上,“土耳其标准时间”似乎不是官方时区id()。取而代之的是时区描述(来自此网站:)“TimeZoneKeyName”是Win 7和Win 8中的土耳其标准时间