我正在构建一个月份列表,我将其用作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月没有被添加到列表中吗?
答案 0 :(得分:3)
您开始使用日历设置为现在的循环,并重置年,月,日,小时,分钟和秒的位置。但是你没有将毫秒数设置为0。
所以一旦你到了十月,你就加一个月,然后获得十一月 +几毫秒。 11月 + some millisesonds 大于11月 + 0毫秒。