У меня есть простая проблема:
TimeZone fromTimeZone = TimeZone.getTimeZone("America/Santiago");
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.HOUR_OF_DAY, 8);
calendar.set(Calendar.MINUTE, 45);
calendar.set(Calendar.SECOND, 0);
calendar.set(Calendar.MILLISECOND, 0);
System.out.println(calendar.getTime() + " |Mili: " + calendar.getTimeInMillis());
Результат: (Мой часовой пояс - это ИКТ)
Wed Apr 01 19:45:00 ICT 2015 |Milisecond: 1427892300000
Проблема заключается в следующем: календарь возвращает неправильное время для этого часового пояса в день DST. Часовой пояс "Америка/Сантьяго" должен быть UTC-3 на данный момент (ref: http://www.timeanddate.com/worldclock/chile/santiago.). Он должен показать:
Wed Apr 01 18:45:00 ICT 2015 |Milisecond: 1427888700000
Вы не применили часовой пояс fromTimeZone
к календарю.
calendar.setTimeZone(fromTimeZone);
до calendar.getTimeInMillis()