public static void main(String[] args) {
//
Date date = new Date();
//获取过去一个月的时间
Date dateTime = startDateTime("4", date);
List<String> everyYear = monthList(dateTime, date);
System.out.println(everyYear);
}
/**
* 计算开始日期
* 1-过去一个月 2-过去一个季度 3-过去六个月 4-过去一年
* @param measurementDate 1-获取过去一个月 2-获取过去一个季度 3-获取过去六个月 4-获取过去一年
* @param date 结束日期
* @return 开始日期
*/
public static Date startDateTime(String measurementDate, Date date){
Calendar calendar = Calendar.getInstance();
switch (measurementDate){
case "1":
calendar.setTime(date);
calendar.add(Calendar.MONTH, -1);
return calendar.getTime();
case "2":
calendar.setTime(date);
calendar.add(Calendar.MONTH, -3);
return calendar.getTime();
case "3":
calendar.setTime(date);
calendar.add(Calendar.MONTH, -6);
return calendar.getTime();
case "4":
calendar.setTime(date);
calendar.add(Calendar.YEAR, -1);
return calendar.getTime();
default: // 默认返回前一天
calendar.setTime(date);
calendar.add(Calendar.DATE, -1);
return calendar.getTime();
}
}
public static List<String> monthList(Date startDate,Date endDate){
//日期工具类准备
DateFormat format = new SimpleDateFormat("yyyy-MM");
//设置开始时间
Calendar calBegin = Calendar.getInstance();
calBegin.setTime(startDate);
//设置结束时间
Calendar calEnd = Calendar.getInstance();
calEnd.setTime(endDate);
//装返回的日期集合容器
List<String> dateList = new ArrayList<>();
//将第一个月添加里面去
dateList.add(format.format(calBegin.getTime()));
// 每次循环给calBegin日期加一天,直到calBegin.getTime()时间等于dEnd
while (endDate.after(calBegin.getTime())) {
// 根据日历的规则,为给定的日历字段添加或减去指定的时间量
calBegin.add(Calendar.MONTH, 1);
dateList.add(format.format(calBegin.getTime()));
}
return dateList;
}