在工作中接到一个需求是 根据时间范围获得季度集 写了一个工具类分享一下。
/**
*根据时间范围获得季度集
* @return
*/
public static List<String> getRangeSet_Q(String beginDate, String endDate){
List<String> rangeSet =null;
SimpleDateFormat sdf = null;
Date begin_date = null;
Date end_date = null;
String[] numStr =null;
String Q=null;
rangeSet = new java.util.ArrayList<String>();
sdf = new SimpleDateFormat("yyyy-MM");
try {
begin_date = sdf.parse(beginDate);//定义起始日期
end_date = sdf.parse(endDate);//定义结束日期
} catch (ParseException e) {
System.out.println("时间转化异常,请检查你的时间格式是否为yyyy-MM或yyyy-MM-dd");
}
Calendar dd = Calendar.getInstance();//定义日期实例
dd.setTime(begin_date);//设置日期起始时间
while(!dd.getTime().after(end_date)){//判断是否到结束日期
numStr= sdf.format(dd.getTime()).split("-",0);
Q = getQuarter(Integer.valueOf(numStr[1]))+"";
// System.out.println(numStr[0].toString()+"年第"+Q+"季");
rangeSet.add(numStr[0].toString()+"年第"+Q+"季度");
dd.add(Calendar.MONTH, 1);//进行当前日期月份加1
}
return rangeSet.stream().distinct().collect(Collectors.toList());//去重返回
}
/**
* 根据月获得季度
* @param month 月
* @return 季度
*/
private static int getQuarter(int month) {
if(month == 1 || month == 2 || month == 3){
return 1;
}else if(month == 4 || month == 5 || month == 6){
return 2;
}else if(month == 7 || month == 8 || month == 9){
return 3;
}else{
return 4;
}
}