gpt4 book ai didi

java - 通过减去动态配置的时间单位获取日期的有效方法

转载 作者:行者123 更新时间:2023-11-30 06:41:41 26 4
gpt4 key购买 nike

我已经安排了读取“资格间隔”的作业,以根据可配置参数扫描足够旧的数据。 “旧”标准被提议作为值和 Java 7 日历单元。示例:

job1.cron=0 10 6 * * *
job1.eligibleinterval.value=5
job1.eligibleinterval.unit=Calendar.DAY # Job 1's Eligible Data is 5 days old

job2.cron=0 10 6 * * *
job2.eligibleinterval.value=1
job2.eligibleinterval.unit=Calendar.MONTH # Job 2's Eligible Data is 1 month old

理想情况下,支持的单位应包括分钟、小时、天、月、年(也许不是)。

在代码中,需要按如下方式计算截止日期(这是硬编码的DAY版本):

// This hard-codes DAYS
LocalDate localDate = LocalDate.now().minusDays(
Long.parseLong(poperties.getProperty("job1.eligibleinterval.value")));

我的问题是,是否有一个好的设计解决方案(可能在 Java 8 中)来减去 Java 8 中动态提供的时间单元以避免不同单元的 If/Else 决策树?有没有比minusDaysminusMonths更优雅的解决方案? (顺便说一下,minusMinutesminusHours 没有快速方法。)

最佳答案

您应该能够使用 LocalDate.minus() 的重载需要一个 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 中的常量一致枚举。

关于java - 通过减去动态配置的时间单位获取日期的有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54809820/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com