2

JSPのテーブルのヘッダーとして使用している月のリストを作成しています。

私が行っているのは、データベースから取得している月を比較し、その月までの反復または「試行」です。この場合、月は11月です

問題は、2012年10月から2013年10月までしかリストを作成できないことです。

私の論理は健全に見えますが、他に何を試すことができるかわかりません。

開始点と比較..データベースからの鍵は

int effortYear = 2013
Calendar max = Calendar.getInstance();
         max.set(effortYear,8,1,0,0,0);
   for (ItemUnitBean item:  scheduledBeans)

       {
             ItemUnitBean bean = new ItemUnitBean();
          for(Entry<Date, ItemPhasing> en : item.getScheduledItemByMonth().entrySet() )
           {
System.out.println( "KEY= " + en.getKey() );  // KEY =2013-11-01 
  if ( en.getKey().compareTo(max.getTime()) > 0 ) 
              {
                    max.setTime(en.getKey());
              }

           }
          finalScheduledBeans.add(bean);
       }

リストを作成します。

TreeSet<Date> scheduledMonthList = new TreeSet<Date>();
  Calendar temp = Calendar.getInstance();
         temp.set(effortYear-1,9,1,0,0,0);

         do 
         {
             scheduledMonthList.add(temp.getTime());
             System.out.println("montList= " + temp.getTime()  );
             temp.add( Calendar.MONTH, 1 );


         }  while( temp.compareTo(max) <= 0 );

これはロガーが吐き出すものです:

ここに画像の説明を入力してください

11月がリストに追加されない理由を誰かが理解できますか?

4

1 に答える 1

3

カレンダーを今に設定し、年、月、日付、時、分、秒をリセットしてループを開始します。ただし、ミリ秒を0に設定しないでください。

したがって、10月に達すると、1か月を追加し、11月+数ミリ秒を取得します。そして、11月+いくつかのミリ秒は11月+0ミリ秒よりも大きいです。

于 2012-11-01T16:48:45.717 に答える