public class TestDemo {
public static void main(String[] args) throws ParseException {
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
Date start = getFirstAndLastDate(format.parse("2022-1-1"), "start", "HALF_YEAR");
System.out.println(format.format(start));
Date end = getFirstAndLastDate(format.parse("2022-1-1"), "end", "HALF_YEAR");
System.out.println(format.format(end));
}
private static Date getFirstAndLastDate(Date publishDate, String str, String type) {
Calendar publishCalendar = Calendar.getInstance();
publishCalendar.setTime(publishDate);
Calendar startCalendar = Calendar.getInstance();
startCalendar.setTime(publishDate);
Calendar endCalendar = Calendar.getInstance();
endCalendar.setTime(publishDate);
if ("MONTH".equals(type)) {
startCalendar.add(Calendar.MONTH, -1);
startCalendar.set(Calendar.DAY_OF_MONTH, 1);
endCalendar.add(Calendar.MONTH, -1);
endCalendar.set(Calendar.DAY_OF_MONTH, endCalendar.getActualMaximum(Calendar.DAY_OF_MONTH));
} else if ("QUARTER".equals(type)) {
startCalendar.set(Calendar.MONTH, ((int) startCalendar.get(Calendar.MONTH) / 3 - 1) * 3);
startCalendar.set(Calendar.DAY_OF_MONTH, 1);
endCalendar.set(Calendar.MONTH, ((int) endCalendar.get(Calendar.MONTH) / 3 - 1) * 3 + 2);
endCalendar.set(Calendar.DAY_OF_MONTH, endCalendar.getActualMaximum(Calendar.DAY_OF_MONTH));
} else if ("HALF_YEAR".equals(type)) {
startCalendar.set(Calendar.MONTH, ((int) startCalendar.get(Calendar.MONTH) / 6 - 1) * 6);
startCalendar.set(Calendar.DAY_OF_MONTH, 1);
endCalendar.set(Calendar.MONTH, ((int) endCalendar.get(Calendar.MONTH) / 6 - 1) * 6 + 5);
endCalendar.set(Calendar.DAY_OF_MONTH, endCalendar.getActualMaximum(Calendar.DAY_OF_MONTH));
} else {
startCalendar.clear();
startCalendar.set(Calendar.YEAR, publishCalendar.get(Calendar.YEAR)-1);
endCalendar.clear();
endCalendar.set(Calendar.YEAR, publishCalendar.get(Calendar.YEAR)-1);
endCalendar.roll(Calendar.DAY_OF_YEAR, -1);
}
if ("start".equals(str)) {
return startCalendar.getTime();
} else {
return endCalendar.getTime();
}
}
}
Calendar获取某日期的上个月,上个季度,上半年,上一年的开始结束日期
最新推荐文章于 2023-04-16 20:51:35 发布