涉及到时间处理的不要转为字符串 数字加减 用java提供的类
下面是计算一个时间 前3年, 6个月等
package cn.wxqkxx.qkb.common;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
/**
* DateUtils
*
* @author zhougf
* @date 2019/10/14
*/
public class DateUtil {
private static final SimpleDateFormat YEAR_FORMAT = new SimpleDateFormat("yyyy");
private static final SimpleDateFormat MONTH_FORMAT = new SimpleDateFormat("yyyyMM");
private static final SimpleDateFormat DATE_FORMAT = new SimpleDateFormat("yyyyMMdd");
/**
* 获取一个年份的前几年
* @param year 传入年份
* @param number 数值
* @return List<String> 年份集合
* @exception ParseException 转换异常
*/
public static List<String> getBeforeYear(String year, int number) throws ParseException {
Date date = DATE_FORMAT.parse(year);
List<String> yearList = new ArrayList<>(16);
if (number == 0) {
yearList.add(year);
return yearList;
}
for(int i = 1; i <= number; i++) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.add(Calendar.YEAR, -i);
yearList.add(YEAR_FORMAT.format(calendar.getTime()));
}
return yearList;
}
/**
* 获取一个年份的前几年
* @param month 传入月份
* @param number 数值
* @return List<String> 月份集合
* @exception ParseException 转换异常
*/
public static List<String> getBeforeMonth(String month, int number) throws ParseException {
Date date = DATE_FORMAT.parse(month);
List<String> monthList = new ArrayList<>(16);
if (number == 0) {
monthList.add(month);
return monthList;
}
for(int i = 1; i <= number; i++) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.add(Calendar.MONTH, -i);
monthList.add(MONTH_FORMAT.format(calendar.getTime()));
}
return monthList;
}
}