检查LocalDateTime是否在一个时间范围内

Rk R Bairi

我的时间A应该落在timeB的90分钟范围内(之前和之后)。

示例:如果timeB是4:00 pm,则时间A应该在2:30 pm(-90)到5:30 pm(+90)之间

尝试了以下内容:

if(timeA.isAfter(timeB.minusMinutes(90)) || timeA.isBefore(timeB.plusMinutes(90))) {
    return isInRange;   
}

您能帮我解决这里的逻辑问题吗?

用户名

正如@JB Nizet在评论中所说,您正在使用OR运算符(||)。
因此,您正在测试A is after B - 90 OR A is before B + 90如果仅满足条件之一,则返回true

要检查是否A在该范围内,必须满足两个条件,因此必须使用AND运算符(&&):

if (timeA.isAfter(timeB.minusMinutes(90)) && timeA.isBefore(timeB.plusMinutes(90))) {
    return isInRange;   
}

但上面的代码不会返回true,如果A正好前90分钟或之后B如果您希望true当差值也恰好是90分钟时返回,则必须更改条件以进行检查:

// lower and upper limits
LocalDateTime lower = timeB.minusMinutes(90);
LocalDateTime upper = timeB.plusMinutes(90);
// also test if A is exactly 90 minutes before or after B
if ((timeA.isAfter(lower) || timeA.equals(lower)) && (timeA.isBefore(upper) || timeA.equals(upper))) {
    return isInRange;
}

另一种选择是使用ajava.time.temporal.ChronoUnit来获取AB以分钟为单位的差,并检查其值:

// get the difference in minutes
long diff = Math.abs(ChronoUnit.MINUTES.between(timeA, timeB));
if (diff <= 90) {
    return isInRange;
}

我使用过,Math.abs因为如果A在之后,则差可以为负B(因此将其调整为正数)。然后,我检查差异是否小于(或等于)90分钟。if (diff < 90)如果要排除“等于90分钟”的情况,可以将其更改为


两种方法之间存在差异。

ChronoUnit四舍五入。例如,如果A在90分59秒后B,将分差四舍五入为90分钟,if (diff <= 90)将是true,在使用isBeforeequals返回false

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

比较时间:检查给定时间是否在另一个时间范围内

检查时间是否在一个时间范围内,还检查用户是否仅给出开始时间或结束时间

在 R 中测试 case 是否在一个时间范围内和一个唯一的 ID

是否有一个 Excel 公式可以返回一个时间范围内的日历月数?

检查一个时间范围是否进入另一个时间范围

在当前时间范围内绘制另一个时间范围内的指标

确定一个时间范围内SQL代理的预期运行时间

RXJS 显示一个时间范围内的累计结果

Spark 1.5.2:在一个时间范围内对DataFrame行进行分组

SQL获取一个时间范围内的所有值-以及之前的值

如何在一个时间范围内按多列查找重复的行

如何安排Windows任务在一个时间范围内每天重复?

检查负数是否在一个范围内

如何设计一个表,记录一个时间范围内的客户状态?

检查一个范围是否在另一个范围内

SQL Server:如何检查一个时间段是否在一个时间段内并扣除时间间隔?

计算一个时间在一个日期范围内出现的次数

如何修改数据以在另一个时间的特定范围内删除ID

有没有办法让 worksheetfunction.randbetween 在一个时间范围内工作?

检查时间戳列是否在另一个数据框的日期范围内

SQL查询以获取在一个时间范围内包含多个实例的值

避免循环:在一个时间范围内定义动作块

检查某个范围内的任何日期是否在另一个范围内

选择在一个时间范围内显示最少n条记录的所有唯一条目

检查日期是否在时间范围内

检查UTC时间是否在范围内

检查日期时间是否在范围内

pyspark 检查 HH:mm:ss 是否在一个范围内

检查拖动的视图是否在另一个视图的范围内