如何循环浏览当年的每个月并获取每个月的第一个和最后一个日期
我想循环遍历给定年份或当年的所有月份,并获取每个月的第一个和最后一个日期。例如, 。本年是2017年和10月份。所以我想从2017年10月到2017年12月,取回每个月的第一个和最后一个日期,比如十月第一个日期是2017-10-01,最后一个日期是2017-10-31。如何循环浏览当年的每个月并获取每个月的第一个和最后一个日期
使用日历(在所有的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);
}
非常感谢你 –
好的答案。 (月份:EnumSet.range(today.getMonth(this.getMonth())代替'for'循环使用'Month'枚举与'EnumSet','YearMonth'而不是'TemporalAdjuster':' ),Month.DECEMBER))'请参阅示例[在IdeOne.com上运行代码](https://www.ideone.com/G4BwY6) –
欢迎您编辑我的帖子:) – Tuco
与编程工作,解释你的问题 –
提示:如果你能可能使用'java.time',这比使用java.util.Calendar'好多了。 –
[获得给定字符串日期中的月份的最后一天]的可能重复(https://stackoverflow.com/questions/13624442/getting-last-day-of-the-mon-in-given-string-date) –