Получить доступные дни между двумя днями в Java - PullRequest
0 голосов
/ 19 октября 2018

Я новичок в Java, и я хочу построить систему бронирования, и теперь я пытаюсь получить доступные дни между двумя днями без забронированных дней.но, однако, мой код работает плохо.

это мой код

Connection connection = DBConnection.getInstance().getConnection();
        PreparedStatement preparedStatement = connection.prepareStatement("SELECT * from A");
        ResultSet executeQuery = preparedStatement.executeQuery();

        while (executeQuery.next()) {
            String refid = executeQuery.getString("REFID");
            statDate = executeQuery.getDate("Start_date");

            endDate = executeQuery.getDate("End_date");
            System.out.println("ref no : " + refid + "   statDate :" + statDate + "     end date :" + endDate);
            System.out.println("\n");
            int month = statDate.getMonth();

            Calendar cal = Calendar.getInstance();
            cal.set(Calendar.MONTH, month);
            cal.set(Calendar.DAY_OF_MONTH, 1);
            int maxDay = cal.getActualMaximum(Calendar.DAY_OF_MONTH);
            SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");

            //
            for (int i = 1; i < maxDay; i++) {
                cal.set(Calendar.DAY_OF_MONTH, i + 1);

                String format = df.format(cal.getTime());
                dateOfMonth.add(format);

                addDays = addDays(statDate, 2);

                if (df.format(cal.getTime()).equals("" + statDate) || df.format(cal.getTime()).equals("" + endDate)) {

                    //System.out.println(statDate + " is not available !");
                    System.out.println("---");

                } else {

                    int bDays = endDate.getDate() - statDate.getDate();
                    //System.out.println(bDays);

                    //===========
                    List<DateTime> between = getDateRange(DateTime.parse(statDate.toString()), DateTime.parse(endDate.toString()));

                    for (DateTime dateTime : between) {
                        Date da = dateTime.toDate();

                        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");                          
                        dateOfBooked.add(sdf.format(da));
                    }

                    System.out.println(df.format(cal.getTime()));
                }

            }
            System.out.println("\n");
        }

это мой сценарий БД

insert into  A  values('1','ref1','2018-02-18','2018-02-25');
insert into  A  values('2','ref1','2018-03-10','2018-03-17');
insert into  A  values('3','ref1','2018-03-20','2018-03-27');

я пытаюсь получить доступные дни от забронированных вамидней.как я могу печатать только доступные дни?

вывод

...