siguiente código muestra el problema: Avanzando un año completo a partir del primer día del año 1435 no se traduce en el primer día de 1436.año al calendario islámico no
Alguna idea de lo que me falta?
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 ????
No es una solución pero podría ayudar a reducir el problema: ¿Ha intentado hacer su calendario inicial con un tipo diferente, como Gregorian? Pruébalo y ve si el problema persiste para descartar o limitar el componente islámico que posiblemente tenga alguna peculiaridad que cause esto. – Dima
Con otros calendarios (gregoriano, hebreo, budista) el algoritmo parece funcionar bien, al menos para los intervalos de tiempo que miré. Incluso para la mayoría de los años islámicos funciona, pero otros no. –
Creé un nuevo proyecto y copié tu código en él. En iOS 4.3, 5.0 y 5.1 obtuve el resultado esperado. 'Muh. 1, 1435' y 'Muh. 1, 1436' –