Ecco il problema, sto cercando un modo per ottenere il numero di settimane in un mese. Ho già trovato una soluzione che sembra funzionare su iOS 5, ma non su IO6 (il numero restituito non è lo stesso, uno in più su iOS 6).Come ottenere il numero di settimane in un mese
- (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];
}
Il valore restituito è 6 su io6 e 5 su io5.
Avete qualche idea?
MODIFICA: Un'altra cosa, il mio dispositivo (ios5) è in francese e il simulatore (ios6) è in inglese. Forse può cambiare qualcosa (come il primo giorno della settimana?)?
Anche in osx dice 6. quale è il conteggio corretto. –
Qual è il mese e l'anno che stai cercando di mostrare il problema? – occulus
Controlla il mio codice di aggiornamento, e lo controllo in osx e ios6, funziona perfettamente. –