例如传入开始时间是"2020-08-12 12:30:19", 结束时间是"2020-12-13 11:30:19"
输出的结果是:
年月集合:
日期集合
代码如下:
/**
* 获取两个日期之间的所有日期集合
* @param minDate
* @param maxDate
* @return
* @throws Exception
*/
public static List<String> getDaysBetween(String minDate, String maxDate) throws Exception {
ArrayList<String> result = new ArrayList<String>();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");//格式化为年月
Calendar min = Calendar.getInstance();
Calendar max = Calendar.getInstance();
min.setTime(sdf.parse(minDate));
max.setTime(sdf.parse(maxDate));
max.add(Calendar.DATE, +1);
Calendar curr = min;
while (curr.before(max)) {
result.add(sdf.format(curr.getTime()));
curr.add(Calendar.DAY_OF_MONTH, 1);
}
return result;
}
/**
* 获取两个日期间年月集合
* @param minDate 最小时间
* @param maxDate 最大时间
* @return 日期集合 格式为 年-月
* @throws Exception
*/
public static List<String> getMonthBetween(String minDate, String maxDate) throws Exception {
ArrayList<String> result = new ArrayList<String>();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");//格式化为年月
Calendar min = Calendar.getInstance();
Calendar max = Calendar.getInstance();
min.setTime(sdf.parse(minDate));
min.set(min.get(Calendar.YEAR), min.get(Calendar.MONTH), 1);
max.setTime(sdf.parse(maxDate));
max.set(max.get(Calendar.YEAR), max.get(Calendar.MONTH), 2);
Calendar curr = min;
while (curr.before(max)) {
result.add(sdf.format(curr.getTime()));
curr.add(Calendar.MONTH, 1);
}
return result;
}