/** * Return the number of days in the given Islamic year * @draft ICU 2.4 */ int32_t IslamicCalendar::handleGetYearLength(int32_t extendedYear) const { if (civil == CIVIL) { return 354 + (civilLeapYear(extendedYear) ? 1 : 0); } else { int32_t month = 12*(extendedYear-1); return (trueMonthStart(month + 12) - trueMonthStart(month)); } }
/** * Return the number of days in the given Islamic year * @draft ICU 2.4 */ int32_t IslamicCalendar::handleGetYearLength(int32_t extendedYear) const { if (cType == CIVIL || cType == TBLA || (cType == UMALQURA && (extendedYear<UMALQURA_YEAR_START || extendedYear>UMALQURA_YEAR_END)) ) { return 354 + (civilLeapYear(extendedYear) ? 1 : 0); } else if(cType == ASTRONOMICAL){ int32_t month = 12*(extendedYear-1); return (trueMonthStart(month + 12) - trueMonthStart(month)); } else { int len = 0; for(int i=0; i<12; i++) len += handleGetMonthLength(extendedYear, i); return len; } }
/** * Return the length (in days) of the given month. * * @param year The hijri year * @param year The hijri month, 0-based * @draft ICU 2.4 */ int32_t IslamicCalendar::handleGetMonthLength(int32_t extendedYear, int32_t month) const { int32_t length = 0; if (civil == CIVIL) { length = 29 + (month+1) % 2; if (month == DHU_AL_HIJJAH && civilLeapYear(extendedYear)) { length++; } } else { month = 12*(extendedYear-1) + month; length = trueMonthStart(month+1) - trueMonthStart(month) ; } return length; }
/** * Return the length (in days) of the given month. * * @param year The hijri year * @param year The hijri month, 0-based * @draft ICU 2.4 */ int32_t IslamicCalendar::handleGetMonthLength(int32_t extendedYear, int32_t month) const { int32_t length = 0; if (cType == CIVIL || cType == TBLA || (cType == UMALQURA && (extendedYear<UMALQURA_YEAR_START || extendedYear>UMALQURA_YEAR_END)) ) { length = 29 + (month+1) % 2; if (month == DHU_AL_HIJJAH && civilLeapYear(extendedYear)) { length++; } } else if(cType == ASTRONOMICAL){ month = 12*(extendedYear-1) + month; length = trueMonthStart(month+1) - trueMonthStart(month) ; } else { length = getUmalqura_MonthLength(extendedYear - UMALQURA_YEAR_START, month); } return length; }