在两次JSP之间没有发生字符串匹配

时间:2018-04-16 18:59:31

标签: java date

初始时间= 22:00:00,最后时间= 23:59:59。 如果当前时间是,请说23:00:00然后我将获得成功消息,否则将显示错误消息。我将这个时间与系统时间进行比较。

我的代码:

//retrieving the system time in string format
SimpleDateFormat sdfDate = new SimpleDateFormat("HH:mm:ss");
Date date = new Date();
String s=sdfDate.format(date);

//Initial and final predefined time 
String ten ="22:00:00";
String twelve ="23:59:59";

//comparing with the system time
try{
if(s.compareTo("twelve")<0 && s.compareTo("ten")>0 ){
out.print("success");
}else{
out.print("failed");
}
}catch(Exception l){
System.out.println(l.toString());
}

我试图在系统时间是23:45:00时检查它。我还通过打印out.print(""+s);确认了时间。但我收到了失败的消息。我不知道我的循环是否有效。

我该怎么做才能解决这个问题?

2 个答案:

答案 0 :(得分:2)

如果您要比较小时数,请不要使用字符串,请使用正确的类型。

在Java中你有:

你可以做到:

LocalTime ten = LocalTime.parse("22:00:00");
LocalTime twelve = LocalTime.parse("23:59:59");

// current time
LocalTime now = LocalTime.now();

// compare
if (now.isBefore(twelve) && now.isAfter(ten)) {
    // succcess
}

要获取当前时间,您还可以将now方法与时区一起使用(例如:LocalTime.now(ZoneId.of("America/New_York"))),如果您需要某个特定位置的时间(now()没有参数将使用JVM默认时区)。

将字符串转换为表示您正在使用的数据的类型更加可靠。另请注意,此API使用isAfterisBefore等有意义的方法名称,使代码更容易,更易读。

比较字符串可能有效,但使用正确的类型效果会更好。

答案 1 :(得分:0)

试试这个:

if(s.compareTo(twelve) < 0 && s.compareTo(ten) > 0)

通过在twelveten周围加上引号,您可以与字符串"twelve""ten"进行比较,而不是引用变量twelve和{ {1}}你在程序中定义了更多。