Java 1.6,Calendar和Java缓存

时间:2013-05-16 15:02:15

标签: java caching jboss calendar timezone

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

当我想获得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-> General-> Temp files-> Configuration->保留我的计算机上的临时文件)时,我得到以下结果:

>>>>>>>>>>>>>>>>>>> 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

如果我拨打下一​​句话,我总能得到一个正确的TimeZone:

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

此:

Europe/Paris

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

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

有任何想法解决这个问题吗?

非常感谢!

0 个答案:

没有答案