当前月份的开始日期和结束日期
2022-09-01 00:41:25
我需要Java中当前月份的开始日期和结束日期。当 JSP 页面加载当前月份时,它应自动计算该月的开始日期和结束日期。它应该与年份和月份无关。也就是说,某个月份有31天或30天或28天。这也应该满足闰年。你能帮我吗?
例如,如果我在列表框中选择“月 5 月”,我需要开始日期为 1,结束日期为 31。
我需要Java中当前月份的开始日期和结束日期。当 JSP 页面加载当前月份时,它应自动计算该月的开始日期和结束日期。它应该与年份和月份无关。也就是说,某个月份有31天或30天或28天。这也应该满足闰年。你能帮我吗?
例如,如果我在列表框中选择“月 5 月”,我需要开始日期为 1,结束日期为 31。
给你:
public Pair<Date, Date> getDateRange() {
Date begining, end;
{
Calendar calendar = getCalendarForNow();
calendar.set(Calendar.DAY_OF_MONTH,
calendar.getActualMinimum(Calendar.DAY_OF_MONTH));
setTimeToBeginningOfDay(calendar);
begining = calendar.getTime();
}
{
Calendar calendar = getCalendarForNow();
calendar.set(Calendar.DAY_OF_MONTH,
calendar.getActualMaximum(Calendar.DAY_OF_MONTH));
setTimeToEndofDay(calendar);
end = calendar.getTime();
}
return Pair.of(begining, end);
}
private static Calendar getCalendarForNow() {
Calendar calendar = GregorianCalendar.getInstance();
calendar.setTime(new Date());
return calendar;
}
private static void setTimeToBeginningOfDay(Calendar calendar) {
calendar.set(Calendar.HOUR_OF_DAY, 0);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
calendar.set(Calendar.MILLISECOND, 0);
}
private static void setTimeToEndofDay(Calendar calendar) {
calendar.set(Calendar.HOUR_OF_DAY, 23);
calendar.set(Calendar.MINUTE, 59);
calendar.set(Calendar.SECOND, 59);
calendar.set(Calendar.MILLISECOND, 999);
}
PS:类只是两个值的对。Pair
如果你有这个选项,你最好避免可怕的Java Date API,而是使用Jodatime。下面是一个示例:
LocalDate monthBegin = new LocalDate().withDayOfMonth(1);
LocalDate monthEnd = new LocalDate().plusMonths(1).withDayOfMonth(1).minusDays(1);