У меня есть время пробуждения в 7:45. Я хочу, чтобы мой код, чтобы вернуться в предыдущий момент времени, когда это было местное время (т.е. в прошлый раз пробуждению.)Получение предыдущего момента с заданным временем дня
Я знаю, что могу это сделать:
LocalTime wakeUpTime = LocalTime.of(7, 45);
ZonedDateTime now = ZonedDateTime.now();
ZonedDateTime todaysWakeUpTime = now.with(wakeUpTime);
ZonedDateTime lastWakeUpTime;
if(todaysWakeUpTime.isAfter(now)){
// e.g. it is now 4:30, so wake-up is still to come,
// return the one from yesterday
lastWakeUpTime = todaysWakeUpTime.minusDays(1);
} else {
// e.g. it is now 11:30, so wake-up for today is already past
lastWakeUpTime = todaysWakeUpTime;
}
System.out.println(lastWakeUpTime);
Есть уборщик версия , например используя временные регуляторы, которые лучше передают намерение (получение последнего из этих времен)?
Чистейший путь будет, имеющий встроенную функцию, так что вам не нужно напишите весь код самостоятельно. Конечно, вы можете написать корректировщик и повторно использовать его (но, пожалуйста, позаботьтесь о присвоении имени классу/методу, содержащему временный регулятор, иначе вам может быть трудно найти его снова, поскольку эта проблема присуща всем статическим вспомогательным классам/инструментам) , Сторона примечания: Моя библиотека времени Time4J уже поддерживает эту функцию из коробки (даже при использовании типов времени компиляции), см. Этот [пример gist] (https://gist.github.com/MenoData/4384d9a6d2209a6c5ac8ca4f0cc69bb7) –