4

2つの日付(終了日は今日)の間のすべての週にわたって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)の2つの方法を試しcurrent.add(Calendar.DAY_OF_YEAR, 7)ました。同じ月に滞在しているため、使用current.roll(Calendar.DATE, 7)できません。使用しGregorianCalendarても効果はありません。

任意の提案をいただければ幸いです!

ありがとうジュリアン

4

4 に答える 4

11

APIの月フィールドは、Calendar1 ベースではなく 0 ベースです。したがって、0 は 1 月を表します。理由を聞かないでください。

于 2010-12-02T10:21:00.567 に答える
1

月として 0 が表示されている場合、月は 0 インデックス ベースであるため、それは 1 月です。0 は 1 月、11 は 12 月です。

于 2010-12-02T10:21:16.477 に答える
1

日付の解釈が間違っていると思います。月フィールドは 0 ベースです。つまり、1 月は 0 です。したがって、2002/11/30 は 12 月 30 日です。

于 2010-12-02T10:24:19.290 に答える