我想遍历给定年份或当年的所有月份,并获得每个月的第一个和最后一个日期。例如。当前年份是 2017 年和 10 月。所以我想从 2017 年 10 月到 2017 年 12 月循环并获取每个月的第一个和最后一个日期,比如 10 月的第一个日期是 2017-10-01,最后一个日期是 2017-10-31。
小智 9
通过使用日历(适用于所有 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);
}
Run Code Online (Sandbox Code Playgroud)
通过使用新的 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);
}
Run Code Online (Sandbox Code Playgroud)
编辑JAVA8+
另一种方法可能是:文档
import static java.time.temporal.TemporalAdjusters.*;//to get functions firstDayOfMonth() and lastDayOfMonth()
...
LocalDate initialdate= ...
LocalDate localDateNow = ...
DateTimeFormatter format1 = ...
for(LocalDate date = initialdate; date.isBefore(localDateNow); date = date.plusMonths(1)) { //Could be plusdays if you want to interate day by day
LocalDate dtini = date.with(firstDayOfMonth());
LocalDate dtend = dtini.with(lastDayOfMonth());
//LocalDate dtend = dtini.plusDays(14); //If you want from day 1 do 15
//TODO: Use dtini and dtend to your like
System.out.println("dtini =" + format1.format(dtini));
System.out.println("dtend =" + format1.format(dtend));
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8495 次 |
| 最近记录: |