如何根据 1 小时间隔获取时间段

Kar*_*Jai 2 java datetime android date java-time

我想将时间段存储在数组列表中。我有开始时间和结束时间。根据开始时间,它应该创建时间段。例如,如果开始时间是 09:00AM,结束时间是 21:00PM,那么它应该添加到 arraylist 中,如下所示

09:00AM 10:00AM 11:00AM 12:00PM 13:00PM 14:00PM ..... 等等 21:00PM

因此,一个用户预订了 13:00PM 至 15:00PM 的时段,因此该时段不应可供其他用户使用,并且其他时段应该可用。如何将已预订时间与新数组列表进行比较。

代码

    private void getStartHourArray() {

    times = new ArrayList<TimeSlot>();
    Calendar calender = Calendar.getInstance();

    calender.setTimeZone(TimeZone.getTimeZone("Asia/Calcutta"));

    int ti = calender.get(Calendar.HOUR_OF_DAY);
    int minutes = calender.get(Calendar.MINUTE);

    System.out.println(minutes);

    String[] quarterHours = {
            "00",

            "30",

    };
    boolean isflag = false;


    times = new ArrayList<>();

    for (int i = 9; i < 22; i++) {

        if (ti > 8) {
            for (int j = 0; j < 2; j++) {

                if ((i == ti && minutes < Integer.parseInt(quarterHours[j])) || (i != ti) || isflag == true) {

                    isflag = true;
                    String time = i + ":" + quarterHours[j];
                    if (i < 10) {
                        time = "0" + time;
                    }
                    String hourFormat = i + ":" + quarterHours[j];
                    if (i < 12) {
                        hourFormat = time + " AM";
                    } else
                        hourFormat = time + " PM";

                    TimeSlot t = new TimeSlot();
                    t.time = hourFormat;
                    t.isAvailable = "Available";
                    times.add(t);
                }
            }
        }

    }

    if (times != null) {
        load.setVisibility(View.GONE);

    }


}
Run Code Online (Sandbox Code Playgroud)

时隙模型类

public class TimeSlot {

public String time;
 public String isAvailable;
}
Run Code Online (Sandbox Code Playgroud)

har*_*esh 6

尝试这样的事情:

String firstDate = "26/02/2019";
String firstTime = "00:00 AM";
String secondDate = "26/02/2019";
String secondTime = "12:00 PM";

String format = "dd/MM/yyyy hh:mm a";

SimpleDateFormat sdf = new SimpleDateFormat(format);

Date dateObj1 = sdf.parse(firstDate + " " + firstTime);
Date dateObj2 = sdf.parse(secondDate + " " + secondTime);
System.out.println("Date Start: "+dateObj1);
System.out.println("Date End: "+dateObj2);

long dif = dateObj1.getTime(); 
while (dif < dateObj2.getTime()) {
    Date slot = new Date(dif);
    System.out.println("Hour Slot --->" + slot);
    dif += 3600000;
}
Run Code Online (Sandbox Code Playgroud)

这将为您提供每小时的时间段,将其添加到 ArrayList 中,当任何用户选择时间时,然后从 ArrayList 中删除该时间段并更新到服务器,这样当下一个用户尝试获取数据时,它将不会获得第一个选定的用户时间段。