HustleCoder
@HustleCoder
Java Junior

Как преобразовать время в Timestamp без часового пояса (UTC)?

Всем привет!

Проблема такая. Есть время в миллисекундах (unix time). При преобразовании его в класс java.sql.Timestamp, он добавляет к нему часовой пояс, указанный в ОС. Например, исходное время 17:00 (UTC 0), но после преобразования в Timestamp, выводит 20:00 (UTC +3).
Как этого избежать?

Попробовал сначала преобразовать время через Instant.ofEpochMilli() - все ок. Но когда полученное время кидаешь в timestamp, он также добавляет таймзону.

P. S. Timestamp используется при записи в поле таблицы PostgresSQL с типом timestamp
  • Вопрос задан
  • 66 просмотров
Решения вопроса 1
@Kot1que
Timestamp ничего не прибавляет, Timestamp.toString() возвращает строку с учётом текущей зоны виртуальной машины.

Timestamp stamp = new Timestamp(1593864000000L); // 07.04.2020 12:00 UTC
System.out.println(stamp.toString()); // 2020-07-04 15:00:00 (Moscow UTC+3)
System.out.println(stamp.getTime() == 1593864000000L); // true


Oracle docs
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы