3

当我做:

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 对象而不是任何东西的库,我只是想了解这个问题

4

2 回答 2

3

您可以使用日历:

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

日期是“区域设置相关的”。您也可以设置语言环境:

Locale.setDefault(...);
于 2013-01-24T13:53:26.727 回答
3

我认为这个博客可以帮助你。

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

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

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

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

一些进一步的调查显示:

  • 自 JRE 1.3 以来,人们抱怨 Sun Java 虚拟机上的错误时区问题。在过去十年中,针对错误的默认时区提交了几份针对 Sun Java 虚拟机的错误报告。
  • 几乎所有的报告都被 Sun 拒绝为不可复制。
于 2013-01-24T13:56:36.667 回答