问题
When I use 08:00 AM
as startTime
and 09:00 AM
as endTime
then my if
statement works perfect
LocalTime selected = new LocalTime(hourOfDay, minute);
if (selected.isAfter(startTime) && selected.isBefore(endTime)) {
// doing some work
}
But whenever i use 11:00 PM
as startTime
and 02:00 AM
as endTime
then my if statement not working.
LocalTime startTime = LocalTime.parse("11:00 PM", DateTimeFormat.forPattern("KK:mm a"));
LocalTime endTime = LocalTime.parse("02:00 AM", DateTimeFormat.forPattern("KK:mm a"));
LocalTime selected = new LocalTime(hourOfDay, minute);
if (selected.isAfter(startTime) && selected.isBefore(endTime)) {
// doing some work
}
回答1:
Your startTime
as bigger than your endTime
in the 2nd example. There can be no time that is bigger than 11:00 PM and smaller than 2:00 AM.
Edit:
You must check if startTime is bigger than endTime and change your query accordingly, f.e.:
LocalTime startTime = LocalTime.parse("11:00 PM", DateTimeFormatter.ofPattern("KK:mm a"));
LocalTime endTime = LocalTime.parse("02:00 AM", DateTimeFormatter.ofPattern("KK:mm a"));
LocalTime selected = LocalTime.parse("01:00 AM", DateTimeFormatter.ofPattern("KK:mm a"));
if (startTime.isBefore(endTime)) {
if (selected.isAfter(startTime) && selected.isBefore(endTime)) {
System.out.println("It works!");
}
} else if (startTime.isAfter(endTime)) {
if (selected.isAfter(startTime) || selected.isBefore(endTime)) {
System.out.println("It works!");
}
} else {
// Decide what to do if startTime and endTime are equal.
}
来源:https://stackoverflow.com/questions/31429438/joda-localtime-meridiem-parse