Java new Date()获取错误的当前时间

时间:2013-01-24 13:47:45

标签: 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上检查日期对象时(我使用Java 1.6),区域信息的ID是 America / Caracas ,它应该是 Europe / Istanbul

可能是什么问题,任何想法?

PS:我不想将时区作为VM参数传递,我不想使用Calendar对象因为我有一些使用Date对象的库而不是任何东西, 我只想了解问题

2 个答案:

答案 0 :(得分:3)

您可以使用日历:

Calendar.getInstance(TimeZone.getTimeZone("GMT"), locale);

日期是“依赖于语言环境”。您也可以设置区域设置:

Locale.setDefault(...);

答案 1 :(得分:3)

我认为这blog可以帮到你。

引用博客文章来解决问题:

  

从Windows XP控制面板打开日期/时间对话框并应用以下更改之一后,Java API开始正常工作:

     
      
  • 手动更改日期/时间,然后再更改回原始正确时间。
  •   
  • 更改时区,然后返回原始时区。
  •   
  • 请求从时间服务器自动更新时间。
  •   

对于记录和来自同一博客:

  

进一步的调查显示:

     
      
  • 自JRE 1.3以来,人们抱怨Sun Java虚拟机上的时区错误。   在过去十年中针对错误的默认时区针对Sun Java虚拟机提交了几个错误报告。
  •   
  • 几乎所有的报道都被Sun拒绝为不可复制的。
  •