Map<Integer, List<String>> result = new HashMap<Integer, List<String>>();
int num = 0;//结果周数
//一直累加小的日期知道跟大的日期相同
while (true) {
if (cl2.compareTo(cl1) <= 0) {
break;
}
int count = 7;//每周天数
if (num == 0) {//第一次进入需要计算是星期几,从来算出剩下几天
//因为java中周末是算作一周开始是1,以此类推周1-6为2-7,而我们通常是从周一开始,所以我们减掉1,我们从周一开始算
int day = cl1.get(Calendar.DAY_OF_WEEK) - 1;
day = day == 0 ? 7 : day;//周末这时候就是0了,我们将周末改成7
count = 7 - day + 1;
}
if (!result.containsKey(num)) {//若是下一周星期一,则新建一个周数
result.put(num, new ArrayList<String>());
}
for (int i = 0; i < count; i++) {//将该周剩余天数添加进去
result.get(num).add(sdf.format(cl1.getTime()));
cl1.add(Calendar.DAY_OF_YEAR, 1);//添加一天
if (cl2.compareTo(cl1) <= 0) {
break;
}
}