【发布时间】:2018-09-02 05:22:42
【问题描述】:
我想检查LocalTime 是否是午夜。对于这个用例,午夜被定义为介于23:59 和00:01 之间的任何时间。这是 2 分钟的范围。
private final LocalTime ONE_MINUTE_BEFORE_MIDNIGHT = LocalTime.of(23, 59, 0);
private final LocalTime ONE_MINUTE_AFTER_MIDNIGHT = LocalTime.of(0, 1, 0);
我有一个方法
public boolean isAtMidnight(LocalTime time) {
return time.isAfter(ONE_MINUTE_BEFORE_MIDNIGHT)
&& time.isBefore(ONE_MINUTE_AFTER_MIDNIGHT);
}
此方法总是返回false。即使是LocalTime.MIDNIGHT。但是,它应该返回 true。
如何检查时间是否距午夜 +-1 分钟?
【问题讨论】:
-
提示:您确定要在 23:59 之后和在 00:01 之前吗?
-
建议:限制变量更明确地定义为
private final LocalTime ONE_MINUTE_BEFORE_MIDNIGHT = LocalTime.MIDNIGHT.minusMinutes(1);,反之亦然 -
当然,如果您想检查中午 +/- 1 分钟,您需要测试“11:59 之后和 12:01 之前”。 ..
-
出于好奇,为什么 23.59.01 被认为是午夜?
标签: java time java-8 java-time localtime