我已經根據可配置的參數安排了讀取“資格間隔”以掃描足夠舊的數據的作業。“舊”標準被提議為一個值和一個 Java 7 日歷單元。例子:job1.cron=0 10 6 * * *job1.eligibleinterval.value=5job1.eligibleinterval.unit=Calendar.DAY # Job 1's Eligible Data is 5 days oldjob2.cron=0 10 6 * * *job2.eligibleinterval.value=1job2.eligibleinterval.unit=Calendar.MONTH # Job 2's Eligible Data is 1 month old理想情況下,支持的單位應該包括Minutes, Hours, Days, Months, Years(也許不是Seconds)。在代碼中,需要按如下方式計算截止日期(這是DAY硬編碼的版本):// This hard-codes DAYSLocalDate localDate = LocalDate.now().minusDays( Long.parseLong(poperties.getProperty("job1.eligibleinterval.value")));我的問題是,是否有一個好的設計解決方案(可能在 Java 8 中)來減去 Java 8 中動態提供的時間單元以避免If/Else不同單元的決策樹?有比minusDays,更優雅的解決方案minusMonths嗎?minusMinutes(順便說一下, or沒有快速的方法minusHours。)
通過減去動態配置的時間單位獲取日期的有效方法
慕的地8271018
2022-06-30 10:35:54