我有以下两个日期字符串:(1)24/04/2013和(2)19/03/2013我试图将这些日期转换成伊斯兰教(Um Al Qura)日期,我使用这个代码块这样做:
NSDateFormatter *df = [[NSDateFormatter alloc] init]; df.dateFormat = @"dd/MM/yyyy"; df.calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar]; NSDate *dateInGrogrian = [df dateFromString:@"24/04/2013"]; NSDateFormatter *df2 = [[NSDateFormatter alloc] init]; NSCalendar * cal = [[NSCalendar alloc] initWithCalendarIdentifier:NSIslamicCalendar]; [df2 setCalendar:cal]; [df2 setDateFormat:@"dd/MM/yyyy"]; NSLog(@"Converted date to Islamic = %@",[df2 stringFromDate:dateInGrogrian]);
如果输入字符串是24/04/2013,NSLog显示:
转换为伊斯兰= 14/06/1434这是正确的(根据所有伊斯兰国家使用的the formal Islamic calendar).但如果输入字符串是19/03/2013,NSLog显示:
转换日期为伊斯兰= 08/05/1434这是不正确的(根据伊斯兰教日历正确的日期必须是07/05/1434这是1天后).
在您提出答案之前要考虑:
(1)我尝试使用日历标识符NSIslamicCivilCalendar而不是NSIslamicCalendar,但无效:其中一个转换日期是正确的,另一个错误(1天后).
(2)我试图使用GMT时区,如下所示:[df2 setTimeZone:[NSTimeZone timeZoneWithName:@“GMT”]];,这产生了第(2)天的正确转换日期,但第(1)天(1天后)不正确.
(3)我已经尝试了解决方案的组合:NSIslamicCivilCalendar有/没有GMT时区,NSIslamicCalendar有/没有GMT时区,但也没有用…
任何人都可以提供满足这两个日期的代码块?所以我确保任何提供的gregorian日期字符串被正确地转换成伊斯兰日期字符串.
非常感谢.