美文网首页iOS日历iOS Developer
iOS日历显示农历信息

iOS日历显示农历信息

作者: 光是光光的光呐 | 来源:发表于2016-05-09 11:50 被阅读1489次

第一次接触到日历的开发,表示需要学习的东西还有很多呢!
关于日历的开发,如果不进行相关设置的话,默认是没有农历的,需要我们进行设置。

核心Demo如下:

monthArr = [NSArray arrayWithObjects:
                        @"正月", @"二月", @"三月", @"四月", @"五月", @"六月", @"七月", @"八月",
                        @"九月", @"十月", @"冬月", @"腊月", nil];

dayArr = [NSArray arrayWithObjects:
                      @"初一", @"初二", @"初三", @"初四", @"初五", @"初六", @"初七", @"初八", @"初九", @"初十",
                      @"十一", @"十二", @"十三", @"十四", @"十五", @"十六", @"十七", @"十八", @"十九", @"二十",
                      @"廿一", @"廿二", @"廿三", @"廿四", @"廿五", @"廿六", @"廿七", @"廿八", @"廿九", @"三十",  nil];

unsigned unitFlags =  NSCalendarUnitMonth |  NSCalendarUnitDay;
NSCalendar *localeCalendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierChinese];
NSDateComponents *localeComp = [localeCalendar components:unitFlags fromDate:date];

NSString *monthStr = [monthArr objectAtIndex:localeComp.month-1];
NSString *dayString = [dayArr objectAtIndex:localeComp.day-1];

当然如果你需要显示当前年份的农历表示需要新增如下设置:

NSArray *chineseYears = [NSArray arrayWithObjects:
 @"甲子", @"乙丑", @"丙寅", @"丁卯",  @"戊辰",  @"己巳",  @"庚午",  @"辛未",  @"壬申",  @"癸酉",
 @"甲戌",   @"乙亥",  @"丙子",  @"丁丑", @"戊寅",   @"己卯",  @"庚辰",  @"辛己",  @"壬午",  @"癸未",
 @"甲申",   @"乙酉",  @"丙戌",  @"丁亥",  @"戊子",  @"己丑",  @"庚寅",  @"辛卯",  @"壬辰",  @"癸巳",
 @"甲午",   @"乙未",  @"丙申",  @"丁酉",  @"戊戌",  @"己亥",  @"庚子",  @"辛丑",  @"壬寅",  @"癸丑",
 @"甲辰",   @"乙巳",  @"丙午",  @"丁未",  @"戊申",  @"己酉",  @"庚戌",  @"辛亥",  @"壬子",  @"癸丑",
 @"甲寅",   @"乙卯",  @"丙辰",  @"丁巳",  @"戊午",  @"己未",  @"庚申",  @"辛酉",  @"壬戌",  @"癸亥", nil];

unsigned unitFlags = NSCalendarUnitYear | NSCalendarUnitMonth |  NSCalendarUnitDay;

NSString *yearStr = [chineseYears objectAtIndex:localeComp.year-1];

效果图如下:


Snip20160509_20.png

GitHub上第三方日历有两个可以试着使用一下:

1、FSCalendar
2、JTCalendar

个人推荐第一个,FSCalendar封装得比较完善。


mark --->关于代码放在什么位置FSCalendar中DataSource有一个方法
Demo如下:

#pragma mark - FSCalendarDataSource
- (NSString *)calendar:(FSCalendar *)calendar subtitleForDate:(NSDate *)date
{
    monthArr = [NSArray arrayWithObjects:
                        @"正月", @"二月", @"三月", @"四月", @"五月", @"六月", @"七月", @"八月",
                        @"九月", @"十月", @"冬月", @"腊月", nil];

    dayArr = [NSArray arrayWithObjects:
                      @"初一", @"初二", @"初三", @"初四", @"初五", @"初六", @"初七", @"初八", @"初九", @"初十",
                      @"十一", @"十二", @"十三", @"十四", @"十五", @"十六", @"十七", @"十八", @"十九", @"二十",
                      @"廿一", @"廿二", @"廿三", @"廿四", @"廿五", @"廿六", @"廿七", @"廿八", @"廿九", @"三十",  nil];

    unsigned unitFlags =  NSCalendarUnitMonth |  NSCalendarUnitDay;
    NSCalendar *localeCalendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierChinese];
    NSDateComponents *localeComp = [localeCalendar components:unitFlags fromDate:date];

    NSString *monthStr = [monthArr objectAtIndex:localeComp.month-1];
    NSString *dayString = [dayArr objectAtIndex:localeComp.day-1];

    NSString *chineseCal_str;
    if ([dayString isEqualToString:@"初一"]) {
           chineseCal_str = monthStr;
       } else {
           chineseCal_str = dayString;
       }
       return chineseCal_str;
   }

其他诸如 JTCalendar 框架中如何设置农历显示,可在其DataSource或者Delegate中查看是否有 subtitleForDate 类似的设置

相关文章

  • 2018-12-21

    iOS日历显示农历信息 - 简书

  • iOS日历显示农历信息

    第一次接触到日历的开发,表示需要学习的东西还有很多呢!关于日历的开发,如果不进行相关设置的话,默认是没有农历的,需...

  • FSCalendar 使用!定制你想要的一款日历控件

    FSCalendar是开源iOS日历控件,支持横向、纵向滑动. 月模式,周模式. 显示农历,标记时间.定制时间...

  • 万年历假期APP技术支持

    最好用的中文日历APP! 提供精确的日历信息查询,同时显示公历、农历等多套历法,更包含每天以及每个时辰的黄历相关吉...

  • 日历(iOS)阳历+农历

    效果如动图: 传入年份,返回给你一年的数据: 实现的具体代码: 返回的数据结构如下图: 上面的这些都是处理阳历数据...

  • 一个IOS日历demo 可以显示农历

    参考了2个demo 写了一个日历,有显示农历和新历 直接上地址,大神勿喷 https://github.com/k...

  • 类似去哪儿中的日历控件

    类似去哪儿中的日历控件,显示农历,农历节日,公历节日,公历日期 Github:https://github.com...

  • 一年365(366)天都在这块布上?

    多动手、多动脑生活少烦恼 日历是一种日常使用的出版物,用于记载日期等相关信息。 每页显示一日信息的叫日历,每页显示...

  • 日历初探

    日历,一种日常使用的出版物,记载着日期等相关信息。 每一页显示一日信息的叫日历, 每一页显示一个月信息的叫月历, ...

  • 命令行学习笔记(系统信息相关)

    date -- 显示当前时间 cal -- 显示当月日历 uptime -- 显示主机运行时间和系统负载信息。up...

网友评论

  • Super_Yi:请问楼主知不知道有什么框架像中华万年历那样的,可以显示比如春节、端午节、国庆节这样的节日,还有如果有节假日,最好显示“假”和“班”的显示。
    光是光光的光呐:@Berton_Yi 春节、端午这些节假日,就如文中所提到的正月 二月一样,是自行定义的,将其对应的日期加入数据便可实现,假和班的话看需求添加吧。
  • 50646e3c6543:我用JTCalendar,获取的时间比点击的时间慢一天,想问一下楼楼遇没遇到这个问题
    光是光光的光呐:@bravewind 文中demo。。。
    50646e3c6543:@光是光光的光呐 我的JTCalendar是2.1.7, 我把demo里面所有.m找了一遍 没有楼楼说的方法,楼楼用的 是哪个版本的啊
    光是光光的光呐:@bravewind 虽然不是很明白你的意思,但是确实有遇到过时间和实际不一致的问题,关键demo是`NSString *monthStr = [monthArr objectAtIndex:localeComp.month-1];
    NSString *dayString = [dayArr objectAtIndex:localeComp.day-1];`将里面的 -1 可以进行相应的调整,这样就可以与实际时间一致了
  • 067193678ad1:怎么显示农历啊
    光是光光的光呐:@JustinAnaly 文章已更新,文末有提及,在JTCalendar 的 DataSource或者Delegate中查看是否有 subtitleForDate 类似的设置,可参考FS的设置
    JustinAnaly:@光是光光的光呐 我 用JT框架的 请问怎么显示农历?
    光是光光的光呐:@Nightcall 创建日历空间,然后添加文中代码即可
  • 苦笑男神:学习了

本文标题:iOS日历显示农历信息

本文链接:https://www.haomeiwen.com/subject/jpherttx.html