通过java.util.Calendar.add()添加一周失败

Jul*_*ian 4 java calendar date dayofweek

我试图在两个日期之间的所有几周内迭代我的Java程序(结束日期是今天).首先,我得到开始日期:

Calendar start = Calendar.getInstance();
start = data.getFirstDate(users, threads);
Run Code Online (Sandbox Code Playgroud)

到现在为止还挺好.开始日期是正确的,我可以使用它.现在我迭代:

Calendar current = start;
while(current.before(Calendar.getInstance()) {
    // Do something
    current.add(Calendar.DATE, 7);
}
Run Code Online (Sandbox Code Playgroud)

好吧,这种作品.我从2002/8/23开始,然后是2002/8/30,然后是2002/9/7 ...... UNTIL 2002/11/30.之后的日期是2003/0/6,既不正确也不是有效日期!

我究竟做错了什么?我试过current.add(Calendar.DATE, 7),current.add(Calendar.WEEK_OF_YEAR, 1),current.add(Calendar.DAY_OF_YEAR, 7)和其他两种方式.使用current.roll(Calendar.DATE, 7)不起作用,因为我留在同一个月.使用GregorianCalendar也没有效果.

任何建议将不胜感激!

谢谢朱利安

hle*_*one 11

CalendarAPI中的月份字段是从0开始的,而不是从1开始的.所以0代表1月.不要问我为什么.