IOS 获取农历方法

来源:互联网 发布:62数据导出脚本 编辑:程序博客网 时间:2024/04/28 10:23


声明:以下为使用IOS的 NSChineseCalendar 网上之前发现有人说这个方法不是完全准确,有些日期会显示的不对,本人没有验证过,也实在懒得用C++那套方法去实现。


另外我做的不过是个简单的功能,还不包括什么节气 节日那些复杂有高端的功能,如果哪位大神不吝赐教 小弟在此感激了。


方法总的说来就这样: 


+(NSString*)getChineseCalendarWithDate:(NSDate *)date{    NSArray *chineseYears = [NSArray arrayWithObjects:                       @"甲子", @"乙丑", @"丙寅",@"丁卯",@"戊辰",@"己巳",@"庚午",@"辛未",@"壬申",@"癸酉",                       @"甲戌",@"乙亥",@"丙子",@"丁丑", @"戊寅",@"己卯",@"庚辰",@"辛己",@"壬午",@"癸未",                       @"甲申",@"乙酉",@"丙戌",@"丁亥",@"戊子",@"己丑",@"庚寅",@"辛卯",@"壬辰",@"癸巳",                       @"甲午",@"乙未",@"丙申",@"丁酉",@"戊戌",@"己亥",@"庚子",@"辛丑",@"壬寅",@"癸丑",                       @"甲辰",@"乙巳",@"丙午",@"丁未",@"戊申",@"己酉",@"庚戌",@"辛亥",@"壬子",@"癸丑",                       @"甲寅",@"乙卯",@"丙辰",@"丁巳",@"戊午",@"己未",@"庚申",@"辛酉",@"壬戌",@"癸亥", nil];        NSArray *chineseMonths=[NSArray arrayWithObjects:                        @"正月", @"二月", @"三月", @"四月", @"五月", @"六月", @"七月", @"八月",                         @"九月", @"十月", @"冬月", @"腊月", nil];            NSArray *chineseDays=[NSArray arrayWithObjects:                      @"初一", @"初二", @"初三", @"初四", @"初五", @"初六", @"初七", @"初八", @"初九", @"初十",                       @"十一", @"十二", @"十三", @"十四", @"十五", @"十六", @"十七", @"十八", @"十九", @"二十",                      @"廿一", @"廿二", @"廿三", @"廿四", @"廿五", @"廿六", @"廿七", @"廿八", @"廿九", @"三十",  nil];            NSCalendar *localeCalendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSChineseCalendar];        unsigned unitFlags = NSYearCalendarUnit | NSMonthCalendarUnit |  NSDayCalendarUnit;    NSDateComponents *localeComp = [localeCalendar components:unitFlags fromDate:date];        NSLog(@"%d_%d_%d  %@",localeComp.year,localeComp.month,localeComp.day, localeComp.date);        NSString *y_str = [chineseYears objectAtIndex:localeComp.year-1];    NSString *m_str = [chineseMonths objectAtIndex:localeComp.month-1];    NSString *d_str = [chineseDays objectAtIndex:localeComp.day-1];    NSString *chineseCal_str =[NSString stringWithFormat: @"%@_%@_%@",y_str,m_str,d_str];        [localeCalendar release];        return chineseCal_str;}



如果需要也可以拆成单独的函数来方便获取,例如获取月份:

+(NSString*)getChineseMonthWithDate:(NSDate *)date{        NSArray *chineseMonths=[NSArray arrayWithObjects:                            @"正月", @"二月", @"三月", @"四月", @"五月", @"六月", @"七月", @"八月",                             @"九月", @"十月", @"冬月", @"腊月", nil];            NSCalendar *localeCalendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSChineseCalendar];        unsigned unitFlags = NSYearCalendarUnit | NSMonthCalendarUnit |  NSDayCalendarUnit;        NSDateComponents *localeComp = [localeCalendar components:unitFlags fromDate:date];        //NSLog(@"%d_%d_%d  %@",localeComp.year,localeComp.month,localeComp.day, localeComp.date);    NSString *m_str = [chineseMonths objectAtIndex:localeComp.month-1];        [localeCalendar release];        return m_str;}



另外如果不知道如何获取NSDate 那么额外加个方法用来根据string和format来得到对应的 NSDate:


+(NSDate *)getDateWithDateString:(NSString *)strDate formatString:(NSString*)strFormat{        NSDateFormatter *formatter = [[[NSDateFormatter alloc] init] autorelease];         NSTimeZone *timeZone =  [NSTimeZone timeZoneWithAbbreviation:@"GMT"];         //NSTimeZone *localTime = [NSTimeZone localTimeZone];          [formatter setTimeZone:timeZone];      [formatter setDateFormat : strFormat];              NSDate *dateTime = [formatter dateFromString:strDate];        return dateTime;}

使用方法类似这样,比如获取世界末日那一时刻的Date~~~

NSDate *date = [Tool_Functions getDateWithDateString:@"2012-12-21 15:14:35"                                             formatString:@"yyyy-MM-dd HH:mm:ss"];


转载请标明来自:http://blog.csdn.net/zhao_yin/article/details/7244958




 

原创粉丝点击