确定给定月份有多少天

Determine how many days in a given month

我正在根据给定月份的天数进行一些计算,

确定当前年月

Date date = new Date();
Year = YearFormat.format(date);
Month = MonthFormat.format(date);

判断当月有多少天

int year = Integer.valueOf(Year);
int month = Integer.valueOf(Month);
Calendar calendarD = new GregorianCalendar(year, month, 1);
int noOfDaysOfMonth = calendarD.getActualMaximum(Calendar.DAY_OF_MONTH);

问题

noOfDaysOfMonth 似乎没有给我正确的天数。

例如 year = 2018 , month = 8 给了我 30 我期望 31

LocalDate::lengthOfMonth

如果使用Java8,则可以访问java.timeAPI。

具体来说,LocalDate::lengthOfMonth 方法。

int length = LocalDate.now().lengthOfMonth();

月份以 0 = 一月开始;月 = 9 月 8 日和 9 月只有 30 天。

为了避免这种情况,例如使用 Calendar.AUGUST 而不是 8。

LengthOfMonth 方法就是为了这个。此外,我认为 Calendar API 不应该再使用了。已经很旧了。

LocalDate date = LocalDate.of(2019, 6, 20);
int days = date.lengthOfMonth();

5 Reasons Why Java's old Date and Calendar API was Bad