Java日历/日期问题

时间:2012-11-01 16:10:57

标签: java

我正在构建一个月份列表,我将其用作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 );

这是记录器吐出的内容:

enter image description here

有人能看出为什么11月没有被添加到列表中吗?

1 个答案:

答案 0 :(得分:3)

您开始使用日历设置为现在的循环,并重置年,月,日,小时,分钟和秒的位置。但是你没有将毫秒数设置为0。

所以一旦你到了十月,你就加一个月,然后获得十一月 +几毫秒。 11月 + some millisesonds 大于11月 + 0毫秒