我在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已經支持此功能(即使使用編譯時類型安全),請參見此[要點示例](https://gist.github.com/MenoData/4384d9a6d2209a6c5ac8ca4f0cc69bb7) –