Joda LocalTime Meridiem parse

只愿长相守 提交于 2019-12-06 14:33:59

问题


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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!