Joda-Time - дни без увеличения

1

Это для школьного проекта.

Вот код:

// get the remaining available hours
public int getAvailableHours(Subject sub) {

    DateTime dt = new DateTime();
    int hours = 0;

    int mondays = 0;
    int tuesdays = 0;
    int wednesdays = 0;
    int thursdays = 0;
    int fridays = 0;
    int saturdays = 0;
    int sundays = 0;

    if(sub != null) {
        if(!sub.getExamDate().isBefore(dt)) {
            int days = Days.daysBetween(dt, sub.getExamDate()).getDays(); 

            // DEBUGGING - take out
            System.out.println(days);
            System.out.println(dt);
            System.out.println(sub.getExamDate());

            DateTime day = new DateTime();
            for(int i = 1; i < days; i++) {
                day.plusDays(i);

                // DEBUGGING - take out
                System.out.println(day.dayOfWeek().getAsText());
                System.out.println(day.dayOfMonth().getAsText());

                switch(day.dayOfWeek().getAsText()) {
                    case "Monday":
                        mondays++;
                        break;
                    case "Tuesday":
                        tuesdays++;
                        break;
                    case "Wednesday":
                        wednesdays++;
                        break;
                    case "Thursday":
                        thursdays++;
                        break;
                    case "Friday":
                        fridays++;
                        break;
                    case "Saturday":
                        saturdays++;
                        break;
                    case "Sunday":
                        sundays++;
                        break;
                    default:

                        break;
                }
            }
            hours = (mondays * hoursOnMonday) + (tuesdays * hoursOnTuesday) + 
                    (wednesdays * hoursOnWednesday) + (thursdays * hoursOnThursday)
                    + (fridays * hoursOnFriday) + (saturdays * hoursOnSaturday) 
                    + (sundays * hoursOnSunday);
        }
    }

    return hours;
}

То, что я пытаюсь сделать, - создать планировщик таблицы времени обучения. В моей программе есть часть, которая позволяет пользователю вводить, сколько времени они хотят изучать в каждый день. Итак, то, что я делаю выше, зацикливается на том, сколько дней есть и как много дней происходит (так, сколько понедельников, понедельников и т.д. Между датой и датой экзамена этого предмета), поэтому я могу рассчитать, сколько общее количество часов, которое пользователь должен изучить.

Но теперь я пытаюсь пропустить его, и он всегда возвращает "Среда", он не увеличивается. Сегодня, в Южной Африке, это среда первого октября, но приложение теперь, похоже, увеличивает этот день, чтобы понять, что он смотрит в четверг второй октября (завтра). Я думаю, что проблема day.plusDays(i); с этой строкой: day.plusDays(i); , но я не знаю, как это сделать.

Теги:
datetime
date
jodatime

1 ответ

5
Лучший ответ

это непреложный экземпляр, поэтому вам придется его поймать

day = day.plusDays(i);

Этот экземпляр datetime неизменен и не подвержен влиянию этого вызова метода. от doc

  • 0
    Не знаю, как я это пропустил! Спасибо!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню