Java 比较字符串中的两个时间

Java 比较字符串中的两个时间,java,Java,我正在尝试比较(HH:SS)格式的字符串时间 字符串timestart=08:00 字符串时间结束=21:00 我正在尝试构建我的代码和逻辑,但我不确定我的时间比较是否正确,我想检查这两个时间字符串是否在timestart大于或的条件下 等于上午06:00,时间结束小于或等于22:00 代码 int endday=Integer.parseInt(到的时间); int startday=Integer.parseInt(开始时间); 如果((startday>='06:00')&&&(start

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

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

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

代码

int endday=Integer.parseInt(到的时间);
int startday=Integer.parseInt(开始时间);

如果((startday>='06:00')&&&(startday='06:00')&&(endday您可以使用java 8日期/时间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");
}`
输出
通过


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");
    }
由于您希望接受frmo 6到22(含6到22)之间的开始时间和结束时间,
isBefore
isAfter
并不能真正给出准确的答案。我们需要方法
isBeforeOrOn
isOnOrAfter
,但它们不存在。与其为此目的编写辅助方法,我是tu将整个逻辑颠倒:如果开始时间在6之前或结束时间在22之后,则验证失败

将6和22定义为
LocalTime
对象解析字符串很有效,但我更喜欢
方法(请自己选择)

对于解析,我们不需要格式化程序,因为您的字符串采用标准ISO 8601格式,
LocalTime
将其解析为默认格式。当然,您可能更喜欢格式化程序,因为它使格式在代码中显式。再次选择您自己的首选项

我假设结束时间不能早于开始时间,这将条件简化为三个子条件而不是四个子条件。如果你不想这样,我相信你会写出四个子条件

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


不,您的比较不正确。在Java中,您可以使用
=
时间
不是
int
parseInt
在这里是错误的。此外,单引号专门用于
字符
。不是
字符串
(错误)。还有更多。即使是字符串(不可能是带有
字符的整数)您不能将
整数
字符串
进行类似的比较。(错误)请尝试编译您的代码,并查找编译错误。可能的重复不是真的,他的实际问题是编译错误。有…6.同意,@FailingCoder。这仍然是一个非常有用的链接。
    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");
    }