如何求一个时间段内如(2008-12-06,2006-06-06),1-31号出现的个数

解决方案 »

  1.   

    没有太好的办法,如果你不在乎效率,只是想知道结果的话可以参考一下面的代码:public class DateTest {
    public static void main(String[] args) throws ParseException{
    int[] counter = new int[31];
    for(int i=0;i<31;i++)counter[i] = 0;

    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
    Date start = sdf.parse("2006-06-06");//包括这一天
    Date end = sdf.parse("2008-12-06");//不包括这一天

    Calendar c = Calendar.getInstance();
    c.setTime(start);
    Calendar c1 = Calendar.getInstance();
    c1.setTime(end);
    do{
    counter[c.get(Calendar.DAY_OF_MONTH)-1] += 1;
    c.add(Calendar.DAY_OF_MONTH, 1);
    }while(c1.after(c));

    for(int i=0;i<31;i++){
    System.out.println((i+1)+"\t:"+counter[i]);
    }
    }
    }