【问题标题】:Joda-Time - days not incrementingJoda-Time - 天数不递增
【发布时间】:2014-10-01 06:35:22
【问题描述】:

这是一个学校项目。

代码如下:

// 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;
}

我想做的是创建一个学习时间表调度程序。我的程序中有一部分允许用户输入他们每天要学习多长时间。所以我上面所做的是循环遍历有多少天,看看每天发生多少天(所以,从现在到该科目的考试日期有多少个星期一、星期二等),这样我就可以计算出有多少天用户必须学习的总小时数。

但是现在,我尝试循环遍历它,它总是返回“星期三”,它没有增加。今天,在南非,它是 10 月 1 日星期三,但该应用程序现在似乎确实增加了这一天,以意识到它正在寻找 10 月 2 日星期四(明天)。我认为问题在于这一行:day.plusDays(i);,但我不知道如何解决。

【问题讨论】:

    标签: java date datetime jodatime


    【解决方案1】:

    它是不可变的实例,所以你必须把它抓回来

    day = day.plusDays(i);
    

    此日期时间实例是不可变的,不受此方法调用的影响。 from doc

    【讨论】:

    • 不知道我是怎么错过的!谢谢!
    猜你喜欢
    • 1970-01-01
    • 2013-05-02
    • 2013-05-03
    • 2017-09-21
    • 2011-04-17
    • 2017-03-06
    • 1970-01-01
    • 1970-01-01
    • 2012-07-22
    相关资源
    最近更新 更多