直接上代码
- date为当期日期;
- pattern为模板,模板仅支持yyyy,yy,q; q为季度;可自行扩展;
- startMonth为首季度起始月;例如:公司以每年1月份为第一季度起始月,startMonth=1; 以4月为第一季度则startMonth=4;
/**
* 获取日期季度
* @param date
* @return 23Q1
*/
public static String getQuarter(LocalDate date,String pattern) {
return getQuarter(date, pattern,1);
}
/**
*
* @param date
* @param pattern yyyy年,q季度,例如:23Q1 yyQq; yyyy年0q季度
* @return
*/
public static String getQuarter(LocalDate date,String pattern,int startMonth) {
if(startMonth<0||startMonth>12) {
throw new IllegalArgumentException();
}
int year = date.getYear();
int month = date.getMonthValue();
int cpMonth = month<startMonth?month+12:month;
Integer q = (cpMonth-startMonth)/3+1;
Integer cpYear = month<startMonth?year-1:year;
String result = pattern;
if(result.contains("yyyy")) {
result = result.replaceAll("yyyy", cpYear.toString());
}
if(result.contains("yy")) {
result = result.replaceAll("yy", cpYear.toString().substring(2));
}
if(result.contains("q")) {
result = result.replaceAll("q", q.toString());
}
return result;
}