You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 10:35:49