取当前时间前一个月的所有日期
Calendar begin = Calendar.getInstance();// 得到一个Calendar的实例
begin.setTime(new Date()); // 设置时间为当前时间
begin.add(Calendar.MONTH, -1);// 年份减1
begin.add(Calendar.DATE, +1);// 日期加1
//Date result = begin.getTime();
Calendar end = Calendar.getInstance();
Long startTime = begin.getTimeInMillis();
Long endTime = end.getTimeInMillis();
Long oneDay = 1000 * 60 * 60 * 24l;// 一天的时间转化为ms
List<Object> dates = new ArrayList<>();
Long time = startTime;
int i = 0;
while (time <= endTime) {
Date d = new Date(time);
DateFormat df = new SimpleDateFormat("MM-dd");
dates.add(i, df.format(d));
i++;
time += oneDay;
}
System.out.println(dates.toString());
获取当前月份前的12个月份
/**
* 获取最近12个月
*/
public static void main(String[] args) {
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++) {
last12Months[11 - i] = cal.get(Calendar.YEAR) + "-" + (cal.get(Calendar.MONTH) + 1);
cal.set(Calendar.MONTH, cal.get(Calendar.MONTH) - 1); //逐次往前推1个月
}
for (int i = 0; i < last12Months.length; i++) {
System.out.println(last12Months[i]);
}
}