tl; dr
JDBC 4.2 и более поздние версии:
Boolean isFutureTask = myResultSet.getObject( "myDateColumn" , Instant.class )
.isAfter( Instant.now() ) ;
Старые JDBC:
Boolean isFutureTask = myResultSet.getTimestamp( … )
.toInstant()
.isAfter( Instant.now() ) ;
java.time
Другие ответыбыли правильны, но использовали устаревшие классы.java.util.Date
/ .Calendar
классы были вытеснены структурой java.time , встроенной в Java 8 и более поздние версии.
Чтобы узнать больше, см. Oracle Tutorial .И поищите в Stack Overflow множество примеров и объяснений.
Большая часть функциональности java.time перенесена на Java 6 & 7 в ThreeTen-Backport и дополнительно адаптирована для Android в ThreeTenABP .
Типы даты и времени
Вы должны хранить значения даты и времени в виде типа даты и времени в вашей базе данных .Я считаю, что это будет TIMESTAMP
типа в MySQL (но я Postgres человек сам).
Затем используйте тип java.sql.Timestamp
для перемещения данныхв / из базы данных.
java.sql.Timestamp ts = myResultSet.getTimestamp( 1 );
Немедленно конвертировать из java.sql в java.time.Классы java.sql являются частью тех старых классов даты и времени, которые оказались плохо спроектированными, запутанными и хлопотными.Используйте их только до тех пор, пока драйверы JDBC не будут обновлены для непосредственной работы с типами java.time.
Старый java.util.Timestamp
имеет новые методы для преобразования в / из Instant
.Instant
- это момент времени на UTC с разрешением наносекунд.
java.time.Instant instant = ts.toInstant();
Получить текущий момент.
Instant now = Instant.now();
Сравнить.
Boolean isStoredDateTimePast = now.isAfter( instant );
В JDBC 4.2 и более поздних версиях ваш драйвер JDBC может иметь прямой доступ к значению из базы данных как объект Instant
через ResultSet::getObject
method.
Если вам необходимо проанализировать эту строку, преобразуйте ее в стандартный формат ISO 8601.Замените пространство посередине на T
.Предполагая, что строка представляет нулевое смещение от UTC, добавьте Z
для Zulu
, что означает UTC.Классы java.time по умолчанию анализируют / генерируют строки в форматах ISO 8601.
String inputOriginal = "2011-12-30 17:10:00".
String input = inputOriginal.replace( " " , "T" ) + "Z" ;
Instant instant = Instant.parse( input );