Java 比较字符串中的两个时间
我正在尝试比较(HH:SS)格式的字符串时间 字符串timestart=08:00 字符串时间结束=21:00 我正在尝试构建我的代码和逻辑,但我不确定我的时间比较是否正确,我想检查这两个时间字符串是否在timestart大于或的条件下 等于上午06:00,时间结束小于或等于22:00 代码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
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");
}