日:开始时间和结束时间内的所有日期
public List<String> findDates(String stime, String etime)
throws ParseException {
List<String> allDate = new ArrayList();
Date dBegin = formatDate.parse(stime);
Date dEnd = formatDate.parse(etime);
allDate.add(formatDate.format(dBegin));
Calendar calBegin = Calendar.getInstance();
// 使用给定的 Date 设置此 Calendar 的时间
calBegin.setTime(dBegin);
Calendar calEnd = Calendar.getInstance();
// 使用给定的 Date 设置此 Calendar 的时间
calEnd.setTime(dEnd);
// 测试此日期是否在指定日期之后
while (dEnd.after(calBegin.getTime())) {
// 根据日历的规则,为给定的日历字段添加或减去指定的时间量
calBegin.add(Calendar.DAY_OF_MONTH, 1);
allDate.add(formatDate.format(calBegin.getTime()));
}
return allDate;
}
月:往前数12个月
public String[] findMonthsDates() {
String[] last12Months = new String[12];
Calendar cal = Calendar.getInstance();
//如果当前日期大于二月份的天数28天或者29天会导致计算月份错误,会多出一个三月份,故设置一个靠前日期解决此问题
cal.set(Calendar.DAY_OF_MONTH, 1);
for (int i = 0; i < 12; i++) {
if(cal.get(Calendar.MONTH) + 1 < 10){
last12Months[11 - i] = cal.get(Calendar.YEAR) + "-0" + (cal.get(Calendar.MONTH) + 1);
}else{
last12Months[11 - i] = cal.get(Calendar.YEAR) + "-" + (cal.get(Calendar.MONTH) + 1);
}
cal.set(Calendar.MONTH, cal.get(Calendar.MONTH) - 1); //逐次往前推1个月
}
return last12Months;
}
年:往前数7年
public int[] findYearsDates() {
int[] lastYears = new int[7];
//获取当前年份
Calendar cal = Calendar.getInstance();
int year = cal.get(Calendar.YEAR);
int num = 0;
for (int i = 6; i >= 0; i--) {
lastYears[num] = year-i;
num++;
}
return lastYears;
}