1

这是我的第一个问题,但却是一个重要的问题(也是一个奇怪的问题)。对不起,如果我的英语不好,我不经常说。

当我想要获取 Calendar.getInstance() 时,我遇到了一个大问题。我正在使用 JBoss 3.2.5,我正在创建一个 .war 应用程序、Java 1.6.0.25(Java 1.7 遇到同样的问题)和 Windows 7 Enterprise。我使用 Java Web Start 执行应用程序。

我的应用程序代码(出现问题的地方)在这里:

public static void main(final String args[]) {
    Calendar c = Calendar.getInstance();
    System.out.println(" >>>>>>>>>>>>>>>>>>> " + c.getTimeZone().getDisplayName());
    System.out.println(" >>>>>>>>>>>>>>>>>>> " + c.getTimeZone().getID());
    System.out.println(" >>>>>>>>>>>>>>>>>>> " + c.getTime());
    System.out.println(" ------------------- ");
      ...

如您所见,问题在于应用程序何时启动。

当我在控制面板(Java->常规->临时文件->配置->在我的计算机上保留临时文件)中启用 Java 缓存时,我得到以下结果:

>>>>>>>>>>>>>>>>>>> Hora de Europa Central
>>>>>>>>>>>>>>>>>>> Europe/Paris
>>>>>>>>>>>>>>>>>>> Thu May 16 16:37:18 CEST 2013

但是当我禁用 Java 缓存时,结果完全不同,我得到了这个:

>>>>>>>>>>>>>>>>>>> Hora Universal Coordinada
>>>>>>>>>>>>>>>>>>> UTC
>>>>>>>>>>>>>>>>>>> Thu May 16 14:41:48 UTC 2013

这就是我的问题,我总是需要相同的结果,第一个,因为我需要 GMT+1,而且,就像我们在夏天一样,我们有一个额外的 +1,然后我们有 GMT+2。

如果我调用下一句,我总是得到一个正确的时区:

System.getProperty("user.timezone"));

这个:

Europe/Paris

我不知道如何解决这个问题,我尝试投射 TimeZones、Calendars、DateFormats 但我无法获得正确的时间,我总是得到一个 UTC 时间。

Java 1.7 的行为不同,我启用了缓存,但如果是干净的,它的行为很糟糕,但只有第一次,第二次工作正常(除非你再次清理 Java 缓存)。

任何想法来解决这个问题???

非常感谢!

4

0 回答 0