tl; dr
Используйте современные java .time классы для извлечения и сравнения сохраненных значений даты с сегодняшней датой.
myResultSet.getObject( … , LocalDate.class ).isAfter( LocalDate.now( "Africa/Tunis" ) )
Подробности
Как объяснил правильный ответ Роттвил , вы не должны использовать ужасный класс java.sql.Date
. Этот класс был лет go вытесненных современными java .time классами. В частности, java.time.LocalDate
.
Начиная с JDB C 4.2, мы можем обмениваться объектами java .time с базой данных. Для столбцов типа сродни стандартному SQL типу DATE
используйте setObject
, updateObject
и getObject
для обмена LocalDate
объектов.
LocalDate ld = myResultSet.getObject( … , LocalDate.class ) ;
Для получения сегодняшней даты необходим часовой пояс. В любой момент времени дата меняется по всему земному шару в зависимости от часового пояса. Таким образом, хотя это может быть «завтра» в Токио, Япония, оно может быть одновременно «вчера» в Толедо, Огайо, США.
Если вы не укажете часовой пояс, текущий часовой пояс JVM по умолчанию применяется неявно.
ZoneId z = ZoneId.of( "Asia/Tokyo" ) ;
LocalDate today = LocalDate.now( z ) ;
Сравните с использованием методов isEqual
, isBefore
и isAfter
.
Boolean isFuture = ld.isAfter( today ) ;