tl; dr
LocalTime lt = LocalTime.now( ZoneId.of( "America/Montreal" ) ) ;
if
(
( ! lt.isBefore( LocalTime.of( 13 , 0 ) ) // If 1 PM or later ( in other words, if not before 1 PM )
&& // …and…
lt.isBefore( LocalTime.of( 17 , 0 ) // if not yet 5 PM
)
{
… proceed
}
else
{
… reject user
}
Half-Open
Ответ от W JS близок, мудро использует современные java .time классы. Однако в работе с датой и временем лучше всего определять промежутки времени, используя подход Half-Open. В этом подходе начало включительно , а окончание эксклюзив .
Таким образом, диапазон с 13:00 до 17:00 начинается в 13:00 и продолжается до , но не включает 17:00.
LocalTime start = LocalTime.of( 13 , 0 ) ;
LocalTime stop = LocalTime.of( 17 , 0 ) ;
Захват текущего времени.
ZoneId z = ZoneId.systemDefault() ; // Or specify a zone such as `Africa/Tunis` or `Asia/Tokyo`.
LocalTime now = LocalTime.now( z ) ;
Сравнение с диапазоном запуска и остановки. Мы используем equals
, isBefore
и isAfter
методы для LocalTime
для сравнения.
Совет: Краткий способ спросить " равно или позже, чем «есть», не раньше ».
boolean nowInEffect = ( ! now.isBefore( start ) ) && ( now.isBefore( stop ) ) ;
Затем выполните действие с пользовательским интерфейсом.
if ( nowInEffect ) {
… proceed
} else {
… tell user to check back later
}
О java .time
java .time Framework встроен в 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?