Часовой пояс Java GregorianCalendar

У меня странная проблема с григорианским календарем Java:

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:S Z");
sdf.setTimeZone(TimeZone.getTimeZone("US/Pacific"));

GregorianCalendar cal1 = new GregorianCalendar(TimeZone.getTimeZone("US/Pacific"));
cal1.setTimeInMillis(1320566400000L);

GregorianCalendar cal2 = new GregorianCalendar(TimeZone.getTimeZone("US/Pacific"));
cal2.setTimeInMillis(1320570000000L);

System.out.println(sdf.format(cal1.getTime()));
System.out.println(sdf.format(cal2.getTime())); 

Я выполнил приведенный выше код на машине с часовым поясом по умолчанию = US Pacific, но машина работает в Германии.

Результат следующий:

2011-11-06 01:00:00:0 -0700
2011-11-06 01:00:00:0 -0800

Я действительно не понимаю, почему в результате другой часовой пояс... Я также протестировал код на другой машине (Часовой пояс по умолчанию = GMT), и он работает правильно.

У кого-нибудь есть идеи, почему возникает эта проблема?

Лучший, Михаил

6
задан Michael 14 June 2012 в 10:42
поделиться