У меня есть строка, представляющая время в UTC.
Мне нужно преобразовать его в длинные, представляющие миллисекунды с полуночи в EST, учитывая летнее время.
Например, в январе смещение составляет 5 часов, а в июне - 4 часа.
Однако приведенный ниже код отображает одинаковое смещение в 5 часов для июня и января.
Переменная tzOffset = -18000000
(= -5 часов) независимо от даты месяца.
Пожалуйста, сообщите,
Спасибо!
package TimeConversion;
import java.text.SimpleDateFormat;
import java.util.*;
public class TimeConversion {
public static void main(String[] args) throws Exception {
String utcTime = "20100101120000000";
SimpleDateFormat sdfIn = new SimpleDateFormat("yyyyMMddHHmmssSSS");
sdfIn.setTimeZone(TimeZone.getTimeZone("UTC"));
long utcMillis = sdfIn.parse(utcTime).getTime();
long tzOffset = TimeZone.getTimeZone("EST").getOffset(utcMillis);
long estMillis = utcMillis + tzOffset;
long estMillisSinceMidnight = estMillis % 86400000;
System.out.println("utcTime = " + utcTime + "\nestMillisSinceMidnight = " + estMillisSinceMidnight + "(" + 24.0 * estMillisSinceMidnight / 86.4e6 + ")");
}
}