java .time
В современном подходе используются java .time классы.
Анализировать входную строку как LocalDateTime
.
Для анализа замените ПРОБЕЛ в середине на T
, чтобы соответствовать ISO 8601 стандарт.
String input = "2020-04-08 13:11:14".replace( " " , "T" ) ;
LocalDateTime ldt = LocalDateTime.parse( input ) ;
В вашем входе отсутствует индикатор какого-либо часового пояса или смещения от UT C. Таким образом, мы не знаем, было ли это в 13:00 в Токио, Япония, в 13:00 в Тулузе, Франция или в 13:00 в Толедо, Огайо, США. Таким образом, вы не можете надежно сравнить это с текущей датой и временем.
Если вы хотите предположить , эта строка должна была указывать время в вашем часовом поясе, а затем назначить часовой пояс, чтобы получить ZonedDateTime
.
ZoneId z = ZoneId.of( "Asia/Tokyo" ) ;
ZonedDateTime then = ldt.atZone( z ) ;
Захватить текущий момент в той же зоне.
ZonedDateTime now = ZonedDateTime.now( z ) ;
Рассчитать через 24 часа.
ZonedDateTime twentyFourHoursFuture = now.plusHours( 24 ) ;
Сравните.
boolean within24Hours = then.isBefore( twentyFourHoursFuture ) ;
Если вы хотите доверять текущему часовому поясу JVM по умолчанию, позвоните ZoneId.systemDefault
. Помните, что это значение по умолчанию может быть изменено другим Java кодом во время выполнения вашего приложения.
ZoneId z = ZoneId.systemDefault() ;
О java .time
Фреймворк java .time встроен в Java 8 и более поздние версии. Эти классы вытесняют проблемные старые устаревшие классы даты и времени, такие как java.util.Date
, Calendar
, & SimpleDateFormat
.
Чтобы узнать больше, см. Учебник Oracle . И поиск переполнения стека для многих примеров и объяснений. Спецификация: JSR 310 .
Проект Joda-Time , теперь в режиме обслуживания , рекомендует перейти на java .time классы.
Вы можете обмениваться java .time объектами непосредственно с вашей базой данных. Используйте драйвер JDB C , совместимый с JDB C 4.2 или более поздней версией. Нет необходимости в строках, нет необходимости в java.sql.*
классах.
Где взять классы java .time?
ThreeTen-Extra Проект расширяет java .time дополнительными классами. Этот проект является полигоном для возможных будущих дополнений к java .time. Здесь вы можете найти несколько полезных классов, таких как Interval
, YearWeek
, YearQuarter
и more .