Я хочу отформатировать время как 19:19:00 в разные часовые пояса.Если я использую SimpleDateFormat
, это всегда учитывает начало эпохи: 1970.01.01.
Некоторые часовые пояса имеют разные смещения в начале эпохи и сейчас.Например, по умолчанию смещение от Европы / Киева сейчас составляет UTC + 0200, но в 1970 году это было UTC + 0300.Это означает, что если я запускаю свой сервер в Европе / Киеве, клиент, который будет входить в систему в Европе / Берлине (UTC + 0100), увидит три часа, а не два.
Я могу решить эту проблему, написав специальный форматер дляjava.sql.Time
.Но я хочу спросить, может быть, есть какой-то общий подход или инструменты / библиотеки Java, которые могут его решить.
Другое решение может быть с использованием joda-time:
TimeZone.setDefault(TimeZone.getTimeZone("Europe/Kiev"));
DateTimeZone.setDefault(DateTimeZone.forID("Europe/Kiev"));
DateTimeFormat.forPattern("HH:mm:ss.SSS")
.withZone(DateTimeZone.forID("Europe/Berlin"))
.print(Time.valueOf("19:00:00").getTime());