我在 hh:mm
中有一个时间,它必须由用户以该格式输入。
但是,我想比较时间(例如 11:22)是上午 10 点到下午 6 点之间吗?但是我怎么比较呢?
原文由 sling 发布,翻译遵循 CC BY-SA 4.0 许可协议
在 Java 8+ 中,您可以使用新的 Java 时间 API:
LocalTime time = LocalTime.parse("11:22")
LocalTime::isBefore
和 LocalTime::isAfter
- 请注意这些方法是严格的所以你的问题会很简单:
public static void main(String[] args) {
LocalTime time = LocalTime.parse("11:22");
System.out.println(isBetween(time, LocalTime.of(10, 0), LocalTime.of(18, 0)));
}
public static boolean isBetween(LocalTime candidate, LocalTime start, LocalTime end) {
return !candidate.isBefore(start) && !candidate.isAfter(end); // Inclusive.
}
对于包含开头但不包含结尾(半开),请使用此行。
return !candidate.isBefore(start) && candidate.isBefore(end); // Exclusive of end.
原文由 assylias 发布,翻译遵循 CC BY-SA 3.0 许可协议
15 回答8.4k 阅读
8 回答6.2k 阅读
1 回答4k 阅读✓ 已解决
3 回答6k 阅读
3 回答2.2k 阅读✓ 已解决
2 回答3.1k 阅读
2 回答3.8k 阅读
Java(还)没有一个好的内置
Time
类(它有一个用于 JDBC 查询,但这不是你想要的)。一种选择是使用 JodaTime API 及其 LocalTime 类。
仅坚持使用内置的 Java API,您就会被 java.util.Date 困住。您可以使用 SimpleDateFormat 来解析时间,然后使用
Date
比较函数来查看它是在其他时间之前还是之后:或者你可以只使用一些字符串操作,也许是一个正则表达式来提取小时和分钟部分,将它们转换为数字并进行数值比较:
这真的完全取决于你想要完成的事情。