Я пытаюсь взять 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 CST
15
3:14:36 CST
Отсюда вывод консоли: вы можете видеть, что час обновляется, а объект Date, возвращаемый из getTime (), - нет. Я могу написать метод uitl, чтобы получить то, что я хочу, но мне интересно, почему это происходит по умолчанию? - Дункан Кребс