codice seguente problema: Advancing un anno a partire dal primo giorno dell'anno 1435 non comporta il primo giorno del 1436.Aggiunta componente anno di calendario islamico non riesce
Tutte le idee che mi manca?
NSDateComponents *components = [[NSDateComponents alloc] init];
[components setDay:1];
[components setMonth:1];
[components setYear:1435];
NSCalendar *islamic = [[NSCalendar alloc] initWithCalendarIdentifier:NSIslamicCalendar];
NSDate *date = [islamic dateFromComponents:components];
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setCalendar:islamic];
[dateFormatter setTimeStyle:NSDateFormatterNoStyle];
[dateFormatter setDateStyle:NSDateFormatterMediumStyle];
NSLog(@"%@", [dateFormatter stringFromDate:date]); // -> 01.01.1435
NSDateComponents *offsetComponents = [[NSDateComponents alloc] init];
[offsetComponents setYear:1];
NSDate *dateWithOffset = [islamic dateByAddingComponents:offsetComponents toDate:date options:0];
NSLog(@"%@", [dateFormatter stringFromDate:dateWithOffset]);
// -> 30.12.1435 ... WHY NOT 01.01.1436 ????
Non una soluzione, ma potrebbe aiutare a restringere il problema: hai provato a fare il tuo calendario iniziale usando un tipo diverso, come Gregorian? Provalo e verifica se il problema si verifica ancora per escludere o restringere la componente islamica, forse con qualche stranezza che lo causa. – Dima
Con altri calendari (gregoriano, ebraico, buddista) l'algoritmo sembra funzionare bene - almeno per gli intervalli di tempo che ho visto. Anche per la maggior parte degli anni islamici funziona, ma alcuni no. –
Ho creato un nuovo progetto e copiato il codice in esso. Sotto iOS 4.3, 5.0 e 5.1 ho ottenuto il risultato previsto. 'Muh. 1, 1435' e 'Muh. 1, 1436' –