У меня есть объект Даты, который представляет время UTC. Когда я использую метод getTime () для получения длинного значения этого объекта, возвращенное значение соответствует нашему местному времени (центральные США). Что корректный путь состоит в том, чтобы получить значение назад, которое соответствует исходному времени UTC?
Спасибо
Класс DateFormat
имеет метод для установки предпочитаемого часового пояса, и есть класс часового пояса, который имеет установку для времени UTC.
Так, например,
SimpleDateFormat sdf = new SimpleDateFormat();
sdf.setTimeZone(new SimpleTimeZone(SimpleTimeZone.UTC_TIME, "UTC"));
Date yourUtcDate = sdf.parse(yourOriginalDate);
java.util.Date
не имеет понятия временной зоны. Она просто хранит время относительно эпохи, то есть 1 января 1970 года 00:00:00 UTC. Дата - это модель, отдельная от представления. Когда вы отображаете дату, к ней применяется понятие часового пояса. Функция toString() Date отображает человекочитаемую дату в часовом поясе по умолчанию. Вы можете либо использовать DateFormat
для отображения даты в другом часовом поясе (например, UTC), либо изменить часовой пояс JVM по умолчанию.
getTime ()
возвращает «количество миллисекунд с 1 января 1970 года, 00:00:00 по Гринвичу», ни больше ни меньше ( очевидно, нужно правильно его создать). Вы можете отформатировать его как хотите, начиная, например, с конструктор GregorianCalendar (TimeZone)
.