4

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

Calendar start = Calendar.getInstance();
start = data.getFirstDate(users, threads);

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

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

嗯,这种工作。我从 2002 年 8 月 23 日开始,然后是 2002 年 8 月 30 日,然后是 2002 年 9 月 7 日……直到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也没有效果。

任何建议将不胜感激!

谢谢朱利安

4

4 回答 4

11

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

于 2010-12-02T10:21:00.567 回答
1

如果您将 0 视为一个月,那是一月,因为月份是基于 0 索引的。0 是一月,11 是十二月。

于 2010-12-02T10:21:16.477 回答
1

我认为您对日期的解释不正确。月份字段从零开始,即 JANUARY 为 0。因此,2002/11/30 是 12 月 30 日。

于 2010-12-02T10:24:19.290 回答
0
于 2018-01-22T02:17:37.800 回答