有没有办法使用time4j lib获得一个月内的天数? 在Android默认日历中,我们可以像下面这样简单地使用
Calendar calendar=Calendar.getInstance();
int numOfDaysInMonth=calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
我的意思是一种标准的方式,而不是疯狂的方式,比如下个月的第一天,然后回来一天,得到一个月的日子。
那么我们可以在time4j日历中做到这一点,例如" PersianCalendar"
答案 0 :(得分:1)
使用默认最大值的@محمدعلی的答案有一个问题:它不使用任何日历上下文,因此无法确定上个月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天。此处介绍的两种方法都会考虑到这一点(但不是默认的最大值方法)。
答案 1 :(得分:0)
是的,有一个干净的方法:
StdCalendarElement<Integer, PersianCalendar> dayOfMonth =
PersianCalendar.DAY_OF_MONTH;
System.out.println(dayOfMonth.getDefaultMaximum());
所有日历都有此枚举
另外,您可以在文档中获得更多信息: [http://time4j.net/javadoc-en/index.html?help-doc.html] 我通过浏览器搜索快捷方式在“索引”页面中找到了该枚举。