获取季度第一天和最后一天
public static String[] getSeasonDay(String dateStr) {
SimpleDateFormat sdf = new SimpleDateFormat(DATE_PATTERN);
Date date;
if (StringUtils.isNotEmpty(dateStr)) {
try {
date = sdf.parse(dateStr);
} catch (ParseException e) {
log.error("转换字符串:{}为日期失败,错误信息:{}", dateStr, e);
return null;
}
} else {
date = new Date();
}
Calendar c = Calendar.getInstance();
c.setTime(date);
int month = c.get(Calendar.MONTH);
Calendar startC = Calendar.getInstance();
startC.setTime(date);
int seasonStartMonthNum = (int) (Math.floor(month / 3.0) * 3);
startC.set(Calendar.MONTH, seasonStartMonthNum);
startC.set(Calendar.DAY_OF_MONTH, 1);
String seasonStartDateStr = sdf.format(startC.getTime());
Calendar endC = Calendar.getInstance();
endC.setTime(date);
int seasonEndMonthNum;
seasonEndMonthNum = seasonStartMonthNum + 2;
endC.set(Calendar.MONTH, seasonEndMonthNum);
endC.set(Calendar.DAY_OF_MONTH, endC.getActualMaximum(Calendar.DAY_OF_MONTH));
String seasonEndDateStr = sdf.format(endC.getTime());
return new String[]{seasonStartDateStr, seasonEndDateStr};
}
public static String[] getSeasonDay22(String dateStr) {
SimpleDateFormat sdf = new SimpleDateFormat(DATE_PATTERN);
Date date;
if (StringUtils.isNotEmpty(dateStr)) {
try {
date = sdf.parse(dateStr);
} catch (ParseException e) {
log.error("转换字符串:{}为日期失败,错误信息:{}", dateStr, e);
return null;
}
} else {
date = new Date();
}
Calendar c = Calendar.getInstance();
c.setTime(date);
int month = c.get(Calendar.MONTH);
int seasonEndMonthNum = (int) (Math.ceil((month + 1) / 3.0) * 3) - 1;
Calendar endC = Calendar.getInstance();
endC.setTime(date);
endC.set(Calendar.MONTH, seasonEndMonthNum);
endC.set(Calendar.DAY_OF_MONTH, endC.getActualMaximum(Calendar.DAY_OF_MONTH));
Calendar startC = Calendar.getInstance();
startC.setTime(date);
int seasonStartMonthNum = seasonEndMonthNum - 2;
startC.set(Calendar.MONTH, seasonStartMonthNum);
startC.set(Calendar.DAY_OF_MONTH, 1);
String seasonStartDateStr = sdf.format(startC.getTime());
String seasonEndDateStr = sdf.format(endC.getTime());
return new String[]{seasonStartDateStr, seasonEndDateStr};
}
获取季度
public int getQuarterOfDay(String dateStr) {
int month = 0;
try {
Date date = parseDateStr(dateStr);
Calendar c = Calendar.getInstance();
c.setTime(date);
month = c.get(Calendar.MONTH) + 1;
} catch (Exception e) {
log.error("转换日期失败,", e);
return 0;
}
return month % 3 == 0 ? month / 3 : month / 3 + 1;
}