java.time
Вы используете ужасные классы даты и времени, которые были вытеснены несколько лет назад классами java.time , определенными в JSR 310.
«CST» и такие псевдозоны из 2-4 символов не являются часовыми поясами. Они не стандартизированы и даже не уникальны! Пример: CST
- центральное время в Северной Америке, а также стандартное время Китая.
Истинные часовые пояса в формате Continent/Region
. Пример: Europe/Paris
или Africa/Tunis
. Смотрите список в Википедии.
Чтобы представить дату и время суток в контексте часового пояса, используйте ZonedDateTime
class.
Чтобы хранить дату и время отдельно от зоны, используйте классы LocalDateTime
и ZoneId
.
База данных
Ваши комментарии указывают на желание сохранить текущий момент в базе данных.
Захватить текущий момент в UTC.
Instant instant = Instant.now() ;
Для использования с JDBC 4.2, преобразовать в OffsetDateTime
.
OffsetDateTime odt = instant.atOffset( ZoneOffset.UTC ) ;
Перейдите к подготовленному заявлению.
myPreparedStatement.setObject( … , odt ) ;
Получить.
OffsetDateTime odt = myResultSet.getObject( … , OffsetDateTime.class ) ;