如何在Java中的给定时间(即上午11:00)和另一个时间(即下午1:00)之间遍历?

时间:2019-05-18 06:11:16

标签: java

我正在用Java开发一家餐馆的在线预订系统。我想知道表是否已保留。我想出了这段代码。

我不确定如何实现此逻辑。

public class Services {

    public void reserveTable(String tableSize ,int time_limit){         

        String starting_time = "11:00 am";
        String ending_time = "1:00 pm";
        String current_time = "12:00 pm"; //time at which new order arrived
        boolean reserved = false

        for (String start = "11:00 am"; start <= ending_time; start ++){
            if (current_time == start){
                reserved = true;
            }
        }        
   }         
}

1 个答案:

答案 0 :(得分:2)

您可以使用DateTimeFormatter将时间字符串解析为LocalTime,然后检查current是否在startend之间:

    DateTimeFormatter formatter = new DateTimeFormatterBuilder()
            .parseCaseInsensitive()
            .appendPattern("h:mm a")
            .toFormatter(Locale.ENGLISH);
    LocalTime start = LocalTime.parse("11:00 am", formatter);
    LocalTime end = LocalTime.parse("1:00 pm", formatter);
    LocalTime current = LocalTime.parse("12:00 pm", formatter);

    boolean reserved = false;
    if (current.isAfter(start) && current.isBefore(end)) {
        reserved = true;
    }

请注意,如果开始和结束时间是午夜,则此操作将无效。例如start是晚上11点,end是凌晨2点。 current的凌晨1点不会导致reserved设置为true。为此,您需要一个日期。