다음 코드는 문제를 보여줍니다 실패?추가 년간의 구성 요소는
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 ????
해결책은 아니지만 문제의 범위를 좁히는 데 도움이 될 수 있습니다. 그레고리력과 같은 다른 유형을 사용하여 초기 달력을 만들려고 했습니까? 이것을 시도하고이 문제가 여전히 발생하여 이슬람 구성 요소의 가능성을 배제하거나 협소화 할 수 있는지 확인하십시오. – Dima
다른 캘린더 (그레고리 안, 히브리어, 불교)를 사용하면 알고리즘이 제대로 작동하는 것처럼 보입니다. 적어도 최소한 보았습니다. 대부분의 이슬람 시대에도 효과가 있지만 일부는 그렇지 않습니다. –
새 프로젝트를 만들고 코드를 복사했습니다. iOS 4.3, 5.0 및 5.1에서 예상되는 결과를 얻었습니다. 'Muh. 1, 1435'와'Muh. 1, 1436' –