国历转农历

国历转农历

NSCalendar支援几种国家的历法后,国历转农历的转换就相当的方便!范例是将日期1979-12-03转为农历,转换之前将日期转入NSDate再将NSCalendar设定成中国历法(NSChineseCalendar),使用NSDateComponents物件处理一下,之后就是以农历为单位的结果。

//-----------start-----------
    NSDateFormatter *dateFormatter1 = [[NSDateFormatter alloc] init];
    [dateFormatter1 setDateFormat:@"yyyy-MM-dd"];
    NSDate *startingDate = [dateFormatter1 dateFromString:@"1979-12-03"];
    //
    NSCalendar* calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSChineseCalendar];

    NSUInteger unitFlags = NSMonthCalendarUnit | NSYearCalendarUnit | NSDayCalendarUnit;
    NSDateComponents *dateComponents = [calendar components:unitFlags fromDate:startingDate];
    //
    NSInteger days     = [dateComponents day];
    NSInteger months   = [dateComponents month];
    NSLog(@"Date 1979-12-03 to NSChineseCalendar %d / %d",months,days);
//------------end------------

输出结果:

2013-03-29 13:39:23.022 testa1[50546:c07] Date 1979-12-03 to NSChineseCalendar 10 / 14