IOS 获取农历节日 节气


扩展了前一篇农历的内容


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


获取农历节日的算法:


+(NSString *)getLunarHoliDayDate:(NSDate *)date{ 
    
    NSTimeInterval timeInterval_day = float(60*60*24);
    
    NSDate *nextDay_date = [NSDate dateWithTimeInterval:timeInterval_day sinceDate:date];
    
    
    
    NSCalendar *localeCalendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSChineseCalendar];
    
    unsigned unitFlags = NSYearCalendarUnit | NSMonthCalendarUnit |  NSDayCalendarUnit;
    
    
    
    NSDateComponents *localeComp = [localeCalendar components:unitFlags fromDate:nextDay_date];
    
    if ( 1 == localeComp.month && 1 == localeComp.day ) {
        
        [localeCalendar release];
        
        return @"除夕";
    }
    
    
    
    NSDictionary *chineseHoliDay = [NSDictionary dictionaryWithObjectsAndKeys:
                                    
                                    @"春节", @"1-1",
                                    
                                    @"元宵", @"1-15",
                                    
                                    @"端午", @"5-5",
                                    
                                    @"七夕", @"7-7",
                                    
                                    @"中元", @"7-15",
                                    
                                    @"中秋", @"8-15",
                                    
                                    @"重阳", @"9-9",
                                    
                                    @"腊八", @"12-8",
                                    
                                    @"小年", @"12-24",
                                    
                                    nil];
    
    localeComp = [localeCalendar components:unitFlags fromDate:date];
    
    NSString *key_str = [NSString stringWithFormat:@"%d-%d",localeComp.month,localeComp.day];
    
    
    return [chineseHoliDay objectForKey:key_str];
    
    
    
}



以下是根据公里年月日来获取农历节气的方法:



记录表:

const  int START_YEAR =1901;    
const  int END_YEAR   =2050;



static int32_t gLunarHolDay[]=    
{    
    0X96, 0XB4, 0X96, 0XA6, 0X97, 0X97, 0X78, 0X79, 0X79, 0X69, 0X78, 0X77,   //1901    
    0X96, 0XA4, 0X96, 0X96, 0X97, 0X87, 0X79, 0X79, 0X79, 0X69, 0X78, 0X78,   //1902    
    0X96, 0XA5, 0X87, 0X96, 0X87, 0X87, 0X79, 0X69, 0X69, 0X69, 0X78, 0X78,   //1903    
    0X86, 0XA5, 0X96, 0XA5, 0X96, 0X97, 0X88, 0X78, 0X78, 0X79, 0X78, 0X87,   //1904    
    0X96, 0XB4, 0X96, 0XA6, 0X97, 0X97, 0X78, 0X79, 0X79, 0X69, 0X78, 0X77,   //1905    
    0X96, 0XA4, 0X96, 0X96, 0X97, 0X97, 0X79, 0X79, 0X79, 0X69, 0X78, 0X78,   //1906    
    0X96, 0XA5, 0X87, 0X96, 0X87, 0X87, 0X79, 0X69, 0X69, 0X69, 0X78, 0X78,   //1907    
    0X86, 0XA5, 0X96, 0XA5, 0X96, 0X97, 0X88, 0X78, 0X78, 0X69, 0X78, 0X87,   //1908    
    0X96, 0XB4, 0X96, 0XA6, 0X97, 0X97, 0X78, 0X79
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值