如何正确地将佛教日期转换为格里高利日期

如何将1月27日,2557年佛教日期转换为2013年1月27日

是的,我知道如果我从2557减去543我会得到2014.但是,我希望它使用NSDateFormatter来解决。

这是我的代码:

dateFormatter = [[NSDateFormatter alloc] init]; dateFormatter.calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar]; TimeZone *timeZone = [NSTimeZone timeZoneWithName:@"UTC"]; [dateFormatter setTimeZone:timeZone]; [dateFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss.SSSSS'Z'"]; // Buddhist date should be converted to Gregorian date. But the // Date still in Buddhist form NSDate *gregDate = [dateFormatter dateFromString:buddhistDate]; 

谢谢。

这几乎是来自Apple文档的复制/粘贴,只需稍作更改即可使用正确的日历类型。 我正在将日期硬编码为您在示例中使用的值。

 NSDateComponents *comps = [[NSDateComponents alloc] init]; [comps setDay:27]; [comps setMonth:1]; [comps setYear:2557]; NSCalendar *buddhist = [[NSCalendar alloc] initWithCalendarIdentifier:NSBuddhistCalendar]; NSDate *date = [buddhist dateFromComponents:comps]; NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar]; NSUInteger unitFlags = NSDayCalendarUnit | NSMonthCalendarUnit | NSYearCalendarUnit; NSDateComponents *components = [gregorian components:unitFlags fromDate:date]; NSInteger day = [components day]; NSInteger month = [components month]; NSInteger year = [components year]; 

创建公历的实例,然后使用NSDateFormatter进行格式化

 let gregorianCalendar = NSCalendar(calendarIdentifier: NSCalendarIdentifierGregorian) let dateFormatter = NSDateFormatter() dateFormatter.calendar = gregorianCalendar dateFormatter.dateFormat = "dd/MM/yyyy HH:mm:ss" print(dateFormatter.stringFromDate(NSDate()))