Вы не можете получить CET
часовой пояс для 31.03.2013 05: 00: 00 , поскольку он больше не был в этом часовом поясе.Чтобы понять, просто проверьте название часового пояса
- CET: Центрально-европейское время (
UTC+1
или GMT+1
) - CEST: Центральноевропейское летнее время (
UTC+2
или GMT+2
)
Это летнее время, которое произошло 31 марта 2013 года в 02:00:00.Таким образом, вы не можете получить CET
часовой пояс для второго свидания, поскольку он находится в летнем "часовом поясе".
Если вы проанализируете 31.03.2013 02:00:00
, вы получите
31.03.2013 02:00:00 = Вс 31 марта 03:00:00 CEST 2013
Потому что в этот день в 02:00:00 наступило спасительное летнее время, которое стало 03:00:00.
Вы можете проверить это с помощью TimeZone.inDaylightTime(Date)
String str = "30.03.2013 06:00:00";
java.util.Date dat = sdaf.parse (str);
System.out.println (str + " = " + dat);
System.out.println("SDT : " + TimeZone.getTimeZone("CET").inDaylightTime(dat));
30.03.2013 06:00:00 = сб. 30 марта 06:00:00 CET 2013
SDT:false
str = "31.03.2013 02:00:00";
dat = sdaf.parse (str);
System.out.println (str + " = " + dat);
System.out.println("SDT : " + TimeZone.getTimeZone("CET").inDaylightTime(dat));
31.03.2013 02:00:00 = вс 31 марта 03:00:00 CEST 2013
SDT: true
Поскольку CET
совпадает с UTC+1
или GMT+1
и CEST
становятся UTC+2
или GMT+2
, когда вы заставляете дату быть на GMT+1
, вы получаете эквивалент CET
, нобез учета параметра SDT.
Примечание. Это одна из причин, по которой LocalDateTime
не беспокоится о TimeZone
для большей части обработки.