日期:2014-05-20  浏览次数:20765 次

时间变量问题
现在用户输入时间字符串
格式为2007-01(开始时间),2007-06(结束时间)
现在要用时间变量保存这两个变量
用for循环
按月递增2007-01,2007-02,2007-03,2007-04,2007-05,2007-06
代码应该怎么写?

------解决方案--------------------
以月来循环
int m = d.getMonth();
------解决方案--------------------
public static void main(String[] args) throws ParseException {
  SimpleDateFormat sdf = new SimpleDateFormat( "yyyy-MM ");
  Date start = sdf.parse( "2007-01 ");
  Date end = sdf.parse( "2008-06 ");
  List <Date> list = getMonths(start, end);
  for(Date d : list) {
    System.out.println(sdf.format(d));
  }
}

public static List <Date> getMonths(Date start, Date end) {
  Calendar c1 = new GregorianCalendar();
  c1.setTime(start);
  Calendar c2 = new GregorianCalendar();
  c2.setTime(end);
  List <Date> list = new ArrayList <Date> ();
  list.add(start);
  while(c1.compareTo(c2) < 0) {
    c1.add(Calendar.MONTH, 1);
    list.add(c1.getTime());
  }    
  return list;    
}
------解决方案--------------------
把年份和月份一起做个简单的hash算法不就可以啦嘛