我们在做一个需求的时候需要后端返回一个选中时间内的时间日期、月份、年份列表:
如:我想查询2024-01-01到2024-01-20这个时间里面的所有日期。
下面来看看代码
/**
* 根据日期格式不同计算两个时间内的日期、月份、年
* @param beginTime 开始时间
* @param endTime 结束时间
* @param dateFormat 日期格式
* @return
*/
public static List<String> getDateBetween(Date beginTime, Date endTime,String dateFormat) {
List<String> result = new ArrayList<>();
try {
//格式化日期
SimpleDateFormat sdf = new SimpleDateFormat(dateFormat);
Calendar min = Calendar.getInstance();
min.setTime(beginTime);
Calendar max = Calendar.getInstance();
max.setTime(endTime);
if(YYYY_MM_DD.equals(dateFormat)){
while (min.before(max) || min.equals(max)) {
result.add(sdf.format(min.getTime()));
min.add(Calendar.DATE, 1);
}
}else if(YYYY_MM.equals(dateFormat)){
while (min.before(max) || min.equals(max)) {
result.add(sdf.format(min.getTime()));
min.add(Calendar.MONTH, 1);
}
}else {
while (min.before(max) || min.equals(max)) {
result.add(String.valueOf(min.get(Calendar.YEAR)));
min.add(Calendar.YEAR, 1);
}
}
} catch (Exception e) {
e.printStackTrace();
}
return result;
}
调用如下:
betweenDay = DateUtils.getDateBetween(beginTime, endTime,DateUtils.YYYY_MM_DD);
List<String> betweenDay =new ArrayList<>();
switch (statisticType){
case "1":
//计算两个日期的间隔天数
betweenDay = DateUtils.getDateBetween(beginTime, endTime,DateUtils.YYYY_MM_DD);
break;
case "2":
//计算两个日期的间隔月份
betweenDay= DateUtils.getDateBetween(beginTime, endTime,DateUtils.YYYY_MM);
break;
case "3":
//计算两个日期的间隔月份
betweenDay= DateUtils.getDateBetween(beginTime, endTime,DateUtils.YYYY);
break;
default:
return null;
}