Używam następujący NSCalendar
metodę, aby uzyskać liczbę dni w danym roku kalendarzowym:Objective-C: Pierwsze liczbę dni w roku kalendarzowym
NSRange range = [gregorian rangeOfUnit:NSDayCalendarUnit
inUnit:NSYearCalendarUnit
forDate:date];
Oczekuję wartość range.length
powrotną typu NSRange
czyli 365 lub 366 (dni).
Jednak ten kod zwraca range.length
z 31
dla wartości daty o wartości 2005-06-06
.
Co jest nie tak z moim kodem?
Jest to pełna fragment kodu:
NSCalendar *gregorian = [[NSCalendar alloc]
initWithCalendarIdentifier:NSGregorianCalendar];
[subArray enumerateObjectsUsingBlock:
^(NSDate *date, NSUInteger idx, BOOL *stop) {
NSUInteger numberOfDays = [gregorian ordinalityOfUnit:NSDayCalendarUnit
inUnit:NSYearCalendarUnit forDate:date];
}];
pokazać pełny kod. –
Zawsze otrzymasz 31 na dowolny miesiąc. –
Tak, wypróbowałem to samo z każdym rokiem, w każdym miesiącu zawsze pokazywało 31. Kiedy zmieniłem NSMonthCalenderUnit liczba dni była poprawna. !!! Albo coś nam brakuje, albo ten interfejs API ma kilka błędów. –