比较字符串两次

时间:2019-03-22 02:36:50

标签: java

我正在尝试以(HH:SS)格式比较我的字符串时间

字符串timestart = 08:00 字符串时间= 21:00

我正在尝试构建代码和逻辑,但是不确定时间比较是否正确,我想检查这两个时间字符串是否在timestart条件下大于或大于 等于上午06:00,并且时间小于或等于22:00

代码

int endday = Integer.parseInt(time_to); 
int startday = Integer.parseInt(time_start);

if ((startday >= '06:00') && (startday  <= '22:00')) &&
((endday  >= '06:00') && (endday  <= '22:00'))  {
System.out.print("passed");

}else{

System.out.print("no");

}

2 个答案:

答案 0 :(得分:1)

您可以使用Java 8 Date / Time API,

`DateTimeFormatter formatter = DateTimeFormatter.ofPattern("HH:mm");
String time_start = "08:00";
String time_to = "22:00";
if (LocalTime.parse(time_start, formatter).
                    isAfter(LocalTime.parse("06:00", formatter)) && 
                    LocalTime.parse("21:00", formatter).
                    isBefore(LocalTime.parse(time_to, formatter)))  {
    System.out.print("passed");
}else{
    System.out.print("no");
}`

输出 passed

readmore

答案 1 :(得分:1)

Vimukthi_R的答案有助于向您展示正确的库类和方法,并且几乎是正确的。所以我的版本与此类似,但我想向您展示一些变化。

    LocalTime minTime = LocalTime.of(6, 0);
    LocalTime maxTime = LocalTime.of(22, 0);

    String timeStart = "08:00";
    String timeEnd = "21:00";
    LocalTime startDay = LocalTime.parse(timeStart);
    LocalTime endDay = LocalTime.parse(timeEnd);

    if (startDay.isBefore(minTime)
            || endDay.isBefore(startDay)
            || endDay.isAfter(maxTime)) {
        System.out.print("no");
    } else {
        System.out.print("passed");
    }

由于您想接受6到22个范围内的开始和结束时间,包括时间范围 ,因此isBeforeisAfter并没有真正给您确切的答案。我们本来需要方法isBeforeOrOnisOnOrAfter,但它们不存在。我没有为此目的编写辅助方法,而是将整个逻辑颠倒了:如果开始时间是 6之前或结束时间 22,则验证失败

将6和22定义为LocalTime对象可以解析字符串,但是我更喜欢of方法(请自行选择)。

对于解析,我们不需要格式化程序,因为您的字符串采用LocalTime解析为默认值的标准ISO 8601格式。当然,人们可能更喜欢格式化程序,因为它使格式在代码中变得明确。再次选择自己的偏好。

我假设结束时间不能早于开始时间,这将条件简化为三个子条件,而不是四个子条件。如果您不希望这样做,我相信您可以写出四个子条件。

  

我不确定我的时间比较是否正确

不,您的比较不正确。在Java中,您可以使用>=<=来比较数字,但不能比较字符串或其他对象,例如LocalTime。另外,正如Johannes Kuhn在评论中说的那样,您无法将08:00之类的字符串解析为整数。 FallingCoder在评论中说了其余的内容:

  

此外,单引号仅用于字符。   不是字符串。

链接: Oracle tutorial: Date Time解释了如何使用java.time。