У меня есть следующий сценарий: у меня есть своеобразное приложение для регистрации, где после 8:00 (включительно) пользователь может выполнить повторную регистрацию, если пользователь не зарегистрировался в это время между D-1 8AM иD 8 AM.
Например:
LastCheckin -> 28 января 08:01 Сегодня -> 29 января 07:50 AM Регистрация невозможна выше
LastCheckin -> 28 января00:50 Сегодня -> 28 января 21:10. Возможна регистрация выше
LastCheckin -> 28 января 07:50 Сегодня -> 28 января 09:50. Возможна регистрация выше
LastCheckin-> 28 января 05:50 вечера Сегодня -> 28 января 06:50 Не могу зарегистрироваться выше
Моя функция проверки:
private Boolean validateLastCheckIn(LocalDateTime lastCheckinDate){
LocalTime checkinTime = LocalTime.MIDNIGHT.plusHours(8);
LocalDate today = LocalDate.now();
LocalDateTime todayCheckinTime = LocalDateTime.of(today, checkinTime);
//if trying to checkIn before limit, but on the same day (eg. after 12am)
if(lastCheckinDate.getDayOfYear() == todayCheckinTime.getDayOfYear()){
return lastCheckinDate.isAfter(todayCheckinTime);
}else{
//if its some other day in the past check
LocalDate yesterdayCheckIn = LocalDate.now().minusDays(1);
LocalDateTime yesterdayCheckinTime = LocalDateTime.of(yesterdayCheckIn, checkinTime);
return lastCheckinDate.isBefore(yesterdayCheckinTime);
}
}
У меня есть два вопроса, есть ли другие?лучший вариант, чем делать это сравнение?Есть ли какие-то пробелы или недостатки, которые я мог упустить?
Спасибо!