一尘不染

Java 时间比较

java

我有时间,hh:mm必须由用户以这种格式输入。

但是,我想比较上午10点到下午6点之间的时间(例如11:22)?但是,我该如何比较呢?


阅读 556

收藏
2020-03-22

共1个答案

一尘不染

Java还没有一个好的内置Time类(它有一个用于JDBC查询的类,但这不是你想要的)。

一种选择是使用JodaTime API和它的本地时间类。

只使用内置的Java API,就只能使用java.util.Date。你可以使用SimpleDateFormat来解析时间,然后使用Date比较函数来查看时间是否在其他时间之前或之后:

SimpleDateFormat parser = new SimpleDateFormat("HH:mm");
Date ten = parser.parse("10:00");
Date eighteen = parser.parse("18:00");

try {
    Date userDate = parser.parse(someOtherDate);
    if (userDate.after(ten) && userDate.before(eighteen)) {
        ...
    }
} catch (ParseException e) {
    // Invalid date was entered
}

或者,你可以只使用一些字符串操作,也许使用正则表达式来提取小时和分钟部分,将它们转换为数字并进行数值比较:

Pattern p = Pattern.compile("(\d{2}):(\d{2})");
Matcher m = p.matcher(userString);
if (m.matches() ) {
    String hourString = m.group(1);
    String minuteString = m.group(2);
    int hour = Integer.parseInt(hourString);
    int minute = Integer.parseInt(minuteString);

    if (hour >= 10 && hour <= 18) {
        ...
    }
}

这实际上取决于你要完成的工作。

2020-03-22