有没有一种方法可以使用time4j lib获得一个月的天数?
在android默认日历中,我们可以像下面这样简单

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


我的意思是说是标准方式,而不是疯狂的方式,例如去下个月的第一天,然后有一天再返回一天中的某天。
所以我们可以在“ PersianCalendar”这样的time4j日历中做到这一点吗?

最佳答案

使用默认最大值的@محمدعلی答案有一个问题:它不使用任何日历上下文,因此无法确定上个月ESFAND的leap年最大值。但是@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天,在leap年则有30天。此处介绍的两种方法都将考虑到这一点(但不包括默认的最大值方法)。

10-05 18:05