Получить количество дней в месяце с time4j

Есть ли способ получить количество дней в месяце, используя time4j lib?
в календаре Android по умолчанию, мы можем получить это так просто, как показано ниже

Calendar calendar=Calendar.getInstance();
int numOfDaysInMonth=calendar.getActualMaximum(Calendar.DAY_OF_MONTH);      

Я имею в виду стандартный способ, а не сумасшедшие, как переход в первый день следующего месяца, затем возвращение в один день и получение дня месяца.
поэтому мы можем сделать это в time4j календари, такие как "PersianCalendar"

0 ответов

Ответ @محمد علی с использованием максимума по умолчанию имеет проблему: он не использует какой-либо календарный контекст, поэтому максимум в високосных годах не может быть определен для последнего месяца ESFAND. Но старый комментарий @Tunaki - уже хороший и простой ответ:

PersianCalendar today = PersianCalendar.nowInSystemTime();
int lengthOfCurrentMonth = today.lengthOfMonth();

В качестве альтернативы вы также можете использовать элемент PersianCalendar.DAY_OF_MONTH но тогда вы должны определить контекстный максимум, а не максимум по умолчанию:

PersianCalendar today = PersianCalendar.nowInSystemTime();
int lengthOfCurrentMonth = today.getMaximum(PersianCalendar.DAY_OF_MONTH);

Оба выражения дадут одинаковые результаты во всех отношениях и полностью эквивалентны.

Для стандартных месяцев (от FARVARDIN (1) до BAHMAN (11)) результаты будут соответствовать максимальному значению по умолчанию. Но последний месяц ESFAND имеет либо 29 дней в нормальных годах, либо 30 дней в високосных. Оба представленных здесь метода будут учитывать это (но не метод максимального значения по умолчанию).

Другие вопросы по тегам