【发布时间】:2011-12-07 21:21:58
【问题描述】:
我正在尝试获取一个 Date 并根据另一个 timezome 对其进行更新,并且我在下面编写了此代码。然后我注意到我设置了新的时区,即 CST,对 getHour 的调用反映了更新,但是当 getTime() 时,日期不反映基于上次设置的时区的时间。
TimeZone zone = TimeZone.getTimeZone(TimeZoneConstants.AmericaNewYork);
Calendar cal = Calendar.getInstance(TimeZone.getTimeZone(TimeZoneConstants.AmericaNewYork));
System.out.println(cal.get(Calendar.HOUR_OF_DAY));
System.out.println(DateHelper.formatDate(cal.getTime(), DateHelper.FORMAT_TIME_LONG));
Calendar cal2 = Calendar.getInstance();
TimeZone zone2 = cal2.getTimeZone();
cal.setTimeZone(zone2);
System.out.println(cal.get(Calendar.HOUR_OF_DAY));
System.out.println(DateHelper.formatDate(cal.getTime(), DateHelper.FORMAT_TIME_LONG));
输出
16 中部标准时间下午 3:14:36 15 中部标准时间下午 3:14:36
从这里控制台输出如下,您可以看到小时已更新,但从 getTime() 返回的 Date 对象未更新。我可以编写一个 uitl 方法来获得我想要的东西,但我想知道为什么会默认发生这种情况? - 邓肯·克雷布斯
【问题讨论】:
-
非常感谢,只是快速浏览了用户指南,它似乎简化了我想做的很多事情。 - 邓肯