String[] months = new String[24];
        for (int i = 0; i < 24; i++) {
         Calendar c = Calendar.getInstance();
         c.add(Calendar.MONTH, -1 * i);
months[i] = new SimpleDateFormat("yyyy-MM")
.format(new Date(c.getTimeInMillis()));
}
        for (int i = 0; i < months.length; i++) {
         System.out.println(months[i]);
}

解决方案 »

  1.   

    把初始化那句放外面吧        Calendar c = Calendar.getInstance();
            String[] months = new String[24];
            for (int i = 0; i < 24; i++) {
             c.add(Calendar.MONTH, -1 * i);
    months[i] = new SimpleDateFormat("yyyy-MM").format(new Date(c.getTimeInMillis()));
    }
      

  2.   

    忘了,把初始化提取出来后c.add这句也要改一下Calendar c = Calendar.getInstance();
            String[] months = new String[24];
            for (int i = 0; i < 24; i++) {
    months[i] = new SimpleDateFormat("yyyy-MM")
    .format(new Date(c.getTimeInMillis()));
             c.add(Calendar.MONTH, -1);
    }
      

  3.   

    这个是最终的吧嗯,获取当前月到两年前共24个月,具体要其他月份可以参考修改
    这个数组里存的是不是当前年月的前24个年月,
    不包括当前的
    直接给你结果吧,包括当前月,想不包含当前月把c.add(Calendar.MONTH, -1);放到months[i] = new 的前面:
    2014-04
    2014-03
    2014-02
    2014-01
    2013-12
    2013-11
    2013-10
    2013-09
    2013-08
    2013-07
    2013-06
    2013-05
    2013-04
    2013-03
    2013-02
    2013-01
    2012-12
    2012-11
    2012-10
    2012-09
    2012-08
    2012-07
    2012-06
    2012-05
      

  4.   

    这个是最终的吧嗯,获取当前月到两年前共24个月,具体要其他月份可以参考修改
    这个数组里存的是不是当前年月的前24个年月,
    不包括当前的
    直接给你结果吧,包括当前月,想不包含当前月把c.add(Calendar.MONTH, -1);放到months[i] = new 的前面:
    2014-04
    2014-03
    2014-02
    2014-01
    2013-12
    2013-11
    2013-10
    2013-09
    2013-08
    2013-07
    2013-06
    2013-05
    2013-04
    2013-03
    2013-02
    2013-01
    2012-12
    2012-11
    2012-10
    2012-09
    2012-08
    2012-07
    2012-06
    2012-05
    好的谢谢