前言:我国古代是用干支纪年的,近代史上提到的甲午战争、戊戌变法、辛亥革命等名词就是干支纪年。所谓干支就是十天干和十二地支的简称。天干、地支按照一定规则(单配单,双配双)可以搭配成60对,也就是一个甲子(60年),周而复始记录时间。(引用)

元素:

10天干:甲乙丙丁戊己庚辛壬癸

12地支:子丑寅卯辰巳午未申酉戌亥

基本计算原理:已知农历年份lunarYear

天干计算法:农历年份减去3再除以10得到的余数对应的天干字就是干
地支计算法:农历年份减去3再除以12得到的余数对应的地支字就是支

基本举例:

甲午战争发生于1894年,八国联军侵华的1900年应是:庚子年

今天是公历2018年3月12日 农历年是2018年,对应干支纪年法中是 戊戌年

。。。

天干地支纪年算法:

- (NSString *)ganzhiYear
{
//干指天干,共有10个符号
NSArray *ganArray = @[@"甲",@"乙",@"丙",@"丁",@"戊",@"己",@"庚",@"辛",@"壬",@"癸"];
//支指地支,共有12个符号:
NSArray *zhiArray = @[@"子",@"丑",@"寅",@"卯",@"辰",@"巳",@"午",@"未",@"申",@"酉",@"戌",@"亥"];
//天干计算法:年减去3再除以10得到的余数对应的天干字就是干
//地支计算法:年减去3再除以12得到的余数对应的地支字就是支
NSInteger ganIndex = (self.lunarYear - 3) % 10;
NSInteger zhiIndex = (self.lunarYear - 3) % 12 ;
ganIndex = (ganIndex == 0) ? 10 - 1 : ganIndex - 1;
zhiIndex = (zhiIndex == 0) ? 12 - 1 : zhiIndex - 1;
return [NSString stringWithFormat:@"%@%@年",ganArray[ganIndex],zhiArray[zhiIndex]];
}

项目地址

农历算法类github地址点我

参考:

1. http://www.ht88.com/article/article_5190_1.html

2. http://www.360doc.com/content/14/0122/14/802494_347109249.shtml

iOS 根据农历日期 获取当前的农历年份 即 干支纪年法算农历年的更多相关文章

  1. 由.Net类库提供的农历计算(C#农历)-获取当前日期的农历日期

    ; i <= chineseDate.GetMonthsInYear(DateTime.Now.Year); i++)            {                Console.W ...

  2. atitit.农历的公式与原理以及农历日期运算

    atitit.农历的公式与原理以及农历日期运算 1. 农历的概述1 2. 如何在电脑程序里面计算农历??1 3. 农历的公式2 4. 获取当日农历日历3 5. 历史日期公式加查表才能得到精确日期3 6 ...

  3. 【.net 深呼吸】获取日期的干支纪年

    其实,中国的农历是用干支纪年法的,“干支”即,十天干与十二地支. 十天干为:甲.乙.丙.丁.戊.己.庚.辛.壬.癸. 十二地支为:子.丑.寅.卯.辰.巳.午.未.申.酉.戌.亥. 十天干的含义如下: ...

  4. 带节日和农历的js日历 带农历的脚本:

    <html><head><meta http-equiv="Content-Type" content="text/html; charse ...

  5. iOS 获取公历、农历日期的年月日

    iOS 获取公历.农历日期的年月日 介绍三种方法获取 Date (NSDate) 的年月日. 用 date 表示当前日期.测试日期为公历 2017 年 2 月 5 日,农历丁酉年,鸡年,正月初九. l ...

  6. js 根据年月获取当月有多少天_js获取农历日期_及Js其它常用有用函数

    //根据年月获取当月有多少天 function getDaysInMonth(year, month) { debugger; //parseInt(number,type)这个函数后面如果不跟第2个 ...

  7. C# 获取农历日期

    //C# 获取农历日期 ///<summary> /// 实例化一个 ChineseLunisolarCalendar ///</summary> private static ...

  8. 利用Javascript获取当前日期的农历日期

    来源:http://www.ido321.com/926.html JavaScript代码 1: /*设置农历日期*/ 2: var CalendarData=new Array(100); 3: ...

  9. js获取农历日期【转】

    var CalendarData=new Array(100); var madd=new Array(12); var tgString="甲乙丙丁戊己庚辛壬癸"; var dz ...

随机推荐

  1. 前端js文件添加版本号

    客户端会缓存这些css或js文件,因此每次升级了js或css文件后,改变版本号,客户端浏览器就会重新下载新的js或css文件 ,刷性缓存的作用.大家可能有时候发现修改了样式或者js,刷新的时候不变,就 ...

  2. centos6.5下redis的安装与配置

    参照官网描述(https://redis.io/download),linux下redis安装步骤如下: $ wget http://download.redis.io/releases/redis- ...

  3. 在海思hisiv100nptl平台上交叉编译并安装SRS

    ./configure --with-arm-ubuntu12 && make 须要安装: apt-get installgcc-arm-linux-gnueabi     ,但hi3 ...

  4. jq和thinkphp经常使用的几种ajax

    第一种方法   第二种方法 jquery方法: MessageAction.class.php <?php class MessageAction extends Action{ functio ...

  5. Hibernate每个层次类一张表(使用注释)

    在上一文章中,我们使用xml文件将继承层次映射到一个表. 在这里,我们将使用注释来执行同样的任务.需要使用@Inheritance(strategy = InheritanceType.SINGLE_ ...

  6. poj 3469(网络流模版)

    题目链接:http://poj.org/problem?id=3469 思路:终于把网络流的模版测试好了,在Dinic和Sap之间还是选择了Sap,事实证明Sap确实比Dinic效率高,在此贴出自己的 ...

  7. Mac下使用安装MongoDB

    1.安装方法1:Mac电脑上面安装很简单,直接下载需要的版本解压即可: 下载网址 https://www.mongodb.com/download-center?jmp=nav#community 方 ...

  8. R-ArcGIS探秘(1)安装以及Sample执行

    在今年的全球用户大会上,Esri官方发布了R-ArcGIS的官方演示样例,在ArcMap和ArcGIS pro中,直接通过Toolbox能够调用R的分析工具包,将R的分析能力直接作用在ArcGIS上面 ...

  9. 关于lucene的RAMDirectory和FSDirectory的性能问题的困惑

    关于lucene的RAMDirectory和FSDirectory的性能问题的困惑 在lucene in Action书中说RAMDirectory的性能总是比FSDirectory优越(书中2.7. ...

  10. Android开发:《Gradle Recipes for Android》阅读笔记(翻译)3.5——在flavors间合并java代码

    问题: 你想要在单独的product flavors里面增加Acitivity或者其它java类. 解决方案: 创建合适的代码目录,增加java类,将它们和main代码合并. 讨论: flavors和 ...