下面的代碼顯示問題:從1435年的第一天,推進全年不會導致1436增加一年組件伊斯蘭教歷失敗
任何想法什麼我失蹤的第一天?
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下,我得到了預期的結果。 '呃。 1,1435'和'Muh。 1,1436' –