我有以下两个日期字符串:(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
显示:
Converted date to Islamic = 14/06/1434
这是正确的(根据所有伊斯兰国家使用的正式伊斯兰日历)。但如果输入字符串是 19/03/2013,则NSLog
显示:
Converted date to Islamic = 08/05/1434
这是不正确的(根据伊斯兰日历,正确的日期必须是 1434 年 7 月 5 日,晚了 1 天)。
-在您提出答案之前要考虑的注意事项:
(1)我曾尝试使用日历标识符NSIslamicCivilCalendar
而不是NSIslamicCalendar
,但无济于事:转换后的日期之一是正确的,另一个是错误的(晚 1 天)。
(2)我曾尝试像这样使用 GMT 时区:[df2 setTimeZone : [NSTimeZone timeZoneWithName:@"GMT"]];
,这为第 (2) 天生成了正确的转换日期,但对于第 (1) 天不正确(落后 1 天)。
(3)我尝试过组合解决方案:NSIslamicCivilCalendar
有/无 GMT 时区,NSIslamicCalendar
有/无 GMT 时区,但也无济于事......
任何人都可以提供满足两个日期的代码块吗?所以我确保任何提供的公历日期字符串都正确转换为伊斯兰日期字符串。
太感谢了。