2

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

确定当前年份月份

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

4

3 回答 3

5

LocalDate::lengthOfMonth

如果您使用 Java 8,则可以访问java.time API。

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

int length = LocalDate.now().lengthOfMonth();
于 2018-08-01T12:01:13.580 回答
3

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

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

于 2018-08-01T12:01:43.197 回答
3

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

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

Java 旧的日期和日历 API 不好的 5 个原因

于 2018-08-01T12:03:27.337 回答