Hier ist das Problem, ich suche nach einer Möglichkeit, die Anzahl der Wochen in einem Monat zu bekommen. Ich finde bereits eine Lösung, die auf ios 5 zu funktionieren scheint, aber nicht auf io6 (die zurückgegebene Nummer ist nicht dieselbe, eine weitere auf ios 6).Wie bekomme ich die Anzahl der Wochen in einem Monat
- (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];
}
Der zurückgegebene Wert ist 6 auf io6 und 5 auf io5.
Haben Sie eine Idee?
EDIT: Eine andere Sache, mein Gerät (ios5) ist in Französisch und der Simulator (ios6) ist in Englisch. Vielleicht kann es etwas ändern (wie der erste Tag der Woche?)?
Sogar in osx sagt es 6. was korrekt ist zählen. –
Was ist der Monat und das Jahr, die Sie versuchen, das Problem zu zeigen? – occulus
Überprüfen Sie meinen aktualisierten Code, und ich überprüfe es in Osx und iOS6, es funktioniert gut. –