给出形如2012-02-01和2012-04-04这样的两个string,如何用java获得这个时间段内的所有日期

有没有什么好的方法,给定任意两个这样形式的string,都能获得时间段内的所有日期。给个思路就行,谢谢

String s1 = "2012-02-01";
String s2 = "2012-04-04";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date begin=sdf.parse(s1);
Date end=sdf.parse(s2);
double between=(end.getTime()-begin.getTime())/1000;//除以1000是为了转换成秒
double day=between/(24*3600);
for(int i = 1;i<=day;i++){

Calendar cd = Calendar.getInstance();
cd.setTime(sdf.parse(s1));
cd.add(Calendar.DATE, i);//增加一天
//cd.add(Calendar.MONTH, n);//增加一个月
System.out.println(sdf.format(cd.getTime()));
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-01-27

    获取两个日期之间相差的天数

    按相差的天数进行循环。循环中,以开始日期加上循环因子i,就是一个新日期。将这个日期(或者转换后的日期字符串)放入集合或者数组中。

    循环后,集合或者数组中的就是所有的日期了。

追问

这怎么好循环,还得考虑具体哪个月有多少天呢

追答

用Calendar进行日期计算!Calendar是精确计算的。

第2个回答  2013-01-26
1 两个字符串转换为Date格式(YYYY-MM-DD)需排好序分别为D1,D2(D1<=D2)
2 可以把【D1,D2】闭区间的日期拿出,可放置于数组,也可放置于集合,统计出其数目。

注:java中date类,calendar含有很多对时间操作的方法,建议阅读jdk。
第3个回答  2013-01-27
用Calendar计算。Calendar这个类对于日期的任何操作都几乎能满足需求,只是参数设置有些麻烦。大体思路是用两个Calendar设置对应的两个日期。然后用gettime判断是否日期相等。不相等就对于其中一个日期做加减就可以了。跨月跨年都不用担心的。
相似回答