Tutaj jest problem, szukam sposobu na uzyskanie liczby tygodni w miesiącu. Już znajduję rozwiązanie, które wydaje się działać na ios 5, ale nie na io6 (zwrócona liczba nie jest taka sama, jedna więcej na ios 6).Jak uzyskać liczbę tygodni w miesiącu
- (int)weeksOfMonth:(int)month inYear:(int)year
{
NSCalendar *cCalendar = [NSCalendar currentCalendar];
NSDateComponents *components = [[NSDateComponents alloc] init];
[components setMonth:month];
[components setYear:year];
NSRange range = [cCalendar rangeOfUnit:NSDayCalendarUnit
inUnit:NSMonthCalendarUnit
forDate:[cCalendar dateFromComponents:components]];
cCalendar = [NSCalendar currentCalendar];
[cCalendar setMinimumDaysInFirstWeek:4];
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc]init];
[dateFormatter setLocale: [[NSLocale alloc] initWithLocaleIdentifier:@"fr"]];
[dateFormatter setDateFormat:@"yyyy-MM-dd"];
NSMutableSet *weeks = [[NSMutableSet alloc] init ];
for(int i = 0; i < range.length; i++)
{
NSString *temp = [NSString stringWithFormat:@"%4d-%2d- %2d",year,month,range.location+i];
NSDate *date = [dateFormatter dateFromString:temp ];
int week = [[cCalendar components: NSWeekOfYearCalendarUnit fromDate:date] weekOfYear];
[weeks addObject:[NSNumber numberWithInt:week]];
}
return [weeks count];
}
Zwracana wartość to 6 na io6 i 5 na io5.
Masz jakiś pomysł?
EDYCJA: Kolejna rzecz, moje urządzenie (ios5) jest w języku francuskim, a symulator (ios6) jest w języku angielskim. Może może coś zmienić (np. Pierwszy dzień tygodnia?)?
Nawet w osxie jest napisane 6. co jest poprawną liczbą. –
Jaki jest miesiąc i rok próby, która pokazuje problem? – occulus
Sprawdź mój zaktualizowany kod, i sprawdzam go w osxie i ios6, działa dobrze. –