Java中如何比较LocalDateTime与含小时的当前时间并满足指定条件
解决方案
你之前用compareTo的方式没法精准区分需求里的两个条件,因为它是对整个LocalDateTime做整体比较,没法单独提取日期和小时的判断逻辑。正确的做法是拆分日期和时间部分,分别判断:
步骤1:提取关键时间分量
先把当前UTC时间和发货时间的日期部分、小时数单独提取出来:
// 获取当前UTC时间 LocalDateTime currentDateTime = LocalDateTime.now(ZoneId.of("UTC")); LocalDate currentDate = currentDateTime.toLocalDate(); int currentHour = currentDateTime.getHour(); // 你的发货时间(假设已通过函数获取) LocalDateTime shippingDateTime = // 调用你的获取函数 LocalDate shippingDate = shippingDateTime.toLocalDate(); int shippingHour = shippingDateTime.getHour();
步骤2:分别判断两个条件
直接针对需求的两个条件做精准判断:
// 条件1:日期相同,且发货小时数大于当前小时数 boolean condition1 = currentDate.equals(shippingDate) && shippingHour > currentHour; // 条件2:发货日期等于当前日期的次日 boolean condition2 = shippingDate.equals(currentDate.plusDays(1)); // 满足任一条件即可 boolean isQualified = condition1 || condition2;
逻辑验证
拿你给出的示例数据测试:
- 当前时间:
2023-01-10T03:42:52.574994,日期是2023-01-10 - 发货时间:
2023-01-11T01:25:59,日期是2023-01-11,正好是当前日期加1天,所以condition2为true
如果是同一天的场景,比如当前是2023-01-11T00:30:00,发货时间是2023-01-11T01:25:59,此时日期相同且发货小时(1)大于当前小时(0),condition1为true。
内容的提问来源于stack exchange,提问作者user3763183
相关产品推荐
相关产品推荐

