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 月+ 几毫秒。而 November + some milliseonsds大于 November + 0 milliseconds

于 2012-11-01T16:48:45.717 回答