亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

通過減去動態配置的時間單位獲取日期的有效方法

通過減去動態配置的時間單位獲取日期的有效方法

慕的地8271018 2022-06-30 10:35:54
我已經根據可配置的參數安排了讀取“資格間隔”以掃描足夠舊的數據的作業。“舊”標準被提議為一個值和一個 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。)
查看完整描述

1 回答

?
瀟湘沐

TA貢獻1816條經驗 獲得超6個贊

您應該能夠使用LocalDate.minus()需要 a的重載TemporalUnit :


long amount = Long.parseLong(properties.getProperty("job1.eligibleinterval.value"));

TemporalUnit unit = ChronoUnit.valueOf(properties.getProperty("job1.eligibleinterval.unit"));


LocalDate localDate = LocalDate.now().minus(amount, unit);

此解決方案要求您的配置文件具有聲明的時間單位以符合ChronoUnit枚舉中的常量。


查看完整回答
反對 回復 2022-06-30
  • 1 回答
  • 0 關注
  • 115 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號