我想循环一年或当年的所有月份,并获得每个月的第一个和最后一个日期。 例如。本年度为2017年和10月份。所以我想从2017年10月开始到2017年的Decemeber,并获取每个月的第一个和最后一个日期,如10月第一个日期是2017年10月1日,最后一个日期是2017年10月31日。
答案 0 :(得分:2)
使用Calendar(适用于所有Java版本):
Calendar cal = Calendar.getInstance();
int month = cal.get(Calendar.MONTH);
int year = cal.get(Calendar.YEAR);
cal.clear();
cal.set(Calendar.YEAR, year);
for (int currentMonth = month; currentMonth < 12; currentMonth++) {
cal.set(Calendar.MONTH, currentMonth);
//first day :
cal.set(Calendar.DAY_OF_MONTH, 1);
Date firstDay = cal.getTime();
System.out.println("firstDay=" + firstDay);
//last day
cal.set(Calendar.DAY_OF_MONTH, cal.getActualMaximum(Calendar.DAY_OF_MONTH));
Date lastDay = cal.getTime();
System.out.println("lastDay=" + lastDay);
}
使用新的Java 8日期/时间API:
LocalDate date = LocalDate.now();
int month = date.getMonthValue();
for (int currentMonth = month; currentMonth <= 12; currentMonth++) {
date = date.withMonth(currentMonth);
//start of month :
LocalDate firstDay = date.withDayOfMonth(1);
System.out.println("firstDay=" + firstDay);
//end of month
LocalDate lastDay = date.with(TemporalAdjusters.lastDayOfMonth());
System.out.println("lastDay=" + lastDay);
}