【发布时间】:2023-03-16 02:59:02
【问题描述】:
public class App {
public static void main(String[] args) {
final String cobDate = "2021-04-08";
final String recordDate = "2020-12-01";
}
public static ZonedDateTime getDate(String date, DateTimeFormatter formatter) {
LocalDate localDate = LocalDate.parse(date, formatter);
return localDate.atStartOfDay(ZoneId.of(ZoneOffset.UTC.getId()));
}
}
我正在使用 java 8,我想检查 recordDate 的年龄是否大于 5 天。但不是从今天开始,而是比 cobDate 早 5 天?我该如何实现这一点,也许可以通过使用现有的返回ZoneDateTime 的实用程序方法来实现?它应该排除周末(例如周六和周日),并且只考虑工作日。
一些场景:
cob日期:08/04/2021 记录日期:08/04/2021 ==> false >> 不超过 5 天
cob日期:08/04/2021 记录日期:2021 年 3 月 31 日 ==> 正确>> 超过 5 天
cob日期:08/04/2021 记录日期:2021 年 2 月 4 日 ==> 错误 >> 不超过 5 天
【问题讨论】:
-
"只考虑工作日" - 是否也需要排除节假日?如果没有,使用 java.time api 计算两个日期之间的天数并减去星期六和星期日的数量应该是相当直接的
-
@Thomas 为简单起见,目前仅限周末。
-
我已经为您可能想要查看的“重复”问题添加了答案。无需迭代,但如果您只对“是否超过 5 天”感兴趣,您可以简单地从
cobDate开始向后迭代并计算工作日,直到您达到 > 5 或recordDate的值。如果记录日期是过去几年,则无需迭代即可知道从那时起已经过了 100 或 1000 天(即使您需要知道无需迭代)。
标签: java date java-8 localdate zoneddatetime