Я предполагаю, что вы используете объекты Java Date правильно?Если вы используете Java 8, вы должны учитывать следующие два:
OffsetDateTime
Дата-время со смещением от UTC / Гринвич в календарной системе ISO-8601, например, 2007-12-03T10: 15: 30 + 01: 00.
OffsetTime
Время со смещением от UTC / Гринвич в календарной системе ISO-8601, например 10: 15: 30 + 01: 00.
https://docs.oracle.com/javase/8/docs/api/java/time/package-summary.html
Если вы сохраняете его в Oracle и все, что вам нужно, это ДАТА, то я бы посоветовал вам сохранить его в виде строки и отформатировать, используя «ГГГГ-ММ-ДД».
По умолчанию Java JVM ВСЕГДА добавляет локальные значения JVM TZ (TimeZone) к любому объекту даты.
Итак, давайте рассмотрим бизнес-пример.Если у вас есть клиенты в 4 разных регионах США, и вам нужно сообщать о событиях даты / времени в их ЛОКАЛЬНОЕ ВРЕМЯ, то вы ДОЛЖНЫ сохранить в БД по времени GMT.По умолчанию местный TZ будет корректировать это соответственно.Встроенные в Oracle объекты Date / Time делают это по умолчанию, как и ВСЕ основные операционные системы.Поэтому создайте DIR, обратите внимание на текущее время, а затем перейдите в региональные настройки для своей ОС и измените часовой пояс.Дата создания DIR будет автоматически переведена.
В простейшем виде это идеальный случай Model-View-Controller.Где изменение TZ - Контроллер.Модель - это значение по Гринвичу, а представление переведено в часовую зону текущего пользователя.
Надеюсь, это поможет вам.ПОЖАЛУЙСТА, используйте GMT и не переусердствуйте.По моему скромному мнению, сохранение в БД, не использующее GMT, вызывает проблемы.
Cheers