我正在制作一个支持将日期从佛教日历转换为公历的应用程序(注意:我正在测试的设备的“常规>国际>日历”设置是“佛教”。)。但是,我不明白为什么 NSDateFormatter 不能正确解析我的日期。这是我的代码:
NSDate *now = [NSDate date];
NSCalendar *gregorianCalendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
formatter.calendar = gregorianCalendar;
formatter.dateFormat = @"yyyy-MM-dd HH:mm:ss Z";
NSString *formattedDate = [formatter stringFromDate:now];
NSDate *boomDate = [formatter dateFromString:formattedDate];
NSLog(@"now: %@, formattedDate (as string) > %@, boomDate (as date) > %@", now, formattedDate, boomDate);
Xcode 的日志说:
now: 2556-05-23 07:11:03 +0000, formattedDate (as string) > 2013-05-23 15:11:03 +0800, boomDate (as date) > 2556-05-23 07:11:03 +0000
当我将formattedDate
(这是一个NSString)转换为NSDate时,即使我正确设置了它的属性(尤其是formatter.calendar
),为什么我的NSDateFormatter会根据佛教日历格式对其进行解析。我需要将我的formattedDate
转换为公历格式的 NSDate。根据它的逻辑,我希望 NSDateFormatter 给我一个公历格式的日期,但它没有。
基本上,我需要一个遵循佛教 NSDate 的格里高利格式的 NSDate。
有任何想法吗?