Sto usando il NSCalendar
seguente metodo per ottenere il numero di giorni in un anno solare:Objective-C: Ottenere il numero di giorni in un anno civile
NSRange range = [gregorian rangeOfUnit:NSDayCalendarUnit
inUnit:NSYearCalendarUnit
forDate:date];
mi aspetto un valore range.length
ritorno di tipo NSRange
che è 365 o 366 (giorni).
Tuttavia, questo codice restituisce un range.length
di 31
per un valore di data 2005-06-06
.
Cosa c'è di sbagliato nel mio codice?
Questa è la piena frammento di codice:
NSCalendar *gregorian = [[NSCalendar alloc]
initWithCalendarIdentifier:NSGregorianCalendar];
[subArray enumerateObjectsUsingBlock:
^(NSDate *date, NSUInteger idx, BOOL *stop) {
NSUInteger numberOfDays = [gregorian ordinalityOfUnit:NSDayCalendarUnit
inUnit:NSYearCalendarUnit forDate:date];
}];
mostra il tuo codice completo. –
Otterrai sempre 31 per uno qualsiasi del mese. –
Sì, ho provato lo stesso con qualsiasi anno, ogni mese mostrava sempre 31. Una volta cambiato NSMonthCalenderUnit il conteggio dei giorni era corretto !!! O ci manca qualcosa o questa API ha alcuni bug. –