如何遍历当月的每个月并获得每个月的第一个和最后一个日期

时间:2017-10-13 11:40:11

标签: java calendar

我想循环一年或当年的所有月份,并获得每个月的第一个和最后一个日期。 例如。本年度为2017年和10月份。所以我想从2017年10月开始到2017年的Decemeber,并获取每个月的第一个和最后一个日期,如10月第一个日期是2017年10月1日,最后一个日期是2017年10月31日。

1 个答案:

答案 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);
        }