前言:我国古代是用干支纪年的,近代史上提到的甲午战争、戊戌变法、辛亥革命等名词就是干支纪年。所谓干支就是十天干和十二地支的简称。天干、地支按照一定规则(单配单,双配双)可以搭配成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. libubox组件(2)——blob/blobmsg (转载 https://segmentfault.com/a/1190000002391970)

    一:blob相关接口 1.数据结构 1: struct blob_attr { 2: uint32_t id_len; /** 高1位为extend标志,高7位存储id, 3: * 低24位存储dat ...

  2. 面向Internet的编程

    面向Internet的编程 1994年秋天我返回工作时,这个公司的景象已经完全改变.他们决定Oak语言——跨平台的.安全的.易传输的代码——时理想的面向Internet的语言.同时他们在制作名为Web ...

  3. 转:SSD详解

    原文:http://blog.csdn.net/a8039974/article/details/77592395, http://blog.csdn.net/jesse_mx/article/det ...

  4. windows下用py2exe打包脚本为可双击运行程序

    文件夹结构: ├── readme.txt ├── settings.py #程序参数 ├── settings.pyc ├── setup.py    #安装文件 ├── spider.ico   ...

  5. 【Unity】基于MVC模式的背包系统 UGUI实现

    前言 本文基于MVC模式,用UGUI初步实现了背包系统. Control层包括了点击和拖拽两种逻辑. 博文首发:http://blog.csdn.net/duzixi 下载地址:https://git ...

  6. linux 大量的TIME_WAIT解决办法(转)

    发现存在大量TIME_WAIT状态的连接tcp        0      0 127.0.0.1:3306              127.0.0.1:41378             TIME ...

  7. linux 下 Shell编程(三)

    if语句应用实例 if语句可以在程序中实现各种逻辑判断. 用if语句判断并显示文件的信息 可以用test命令和相关的参数来判断文件的属性,然后根据判断结果输出文件的信息. #!/bin/bash #4 ...

  8. 第三章 T-SQL 编程

    3.1 使用变量 变量是可以存储数据值的对象.可以使用局部变量向SQL语句传递数据.在T-SQL中执行一批SQL语句时,可以声明许多变量以便临时使用.声明变量以后,可以在批处理中用一条T-SQL语句设 ...

  9. H - N皇后问题

    H - N皇后问题 Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Descripti ...

  10. EasyNVR浏览器无插件直播在Linux系统下将录像文件与EasyNVR可执行文件分离运行的方案

    问题背景 在工控机上运行EasyNVR,WEB访问出现设备在线,但是视频没有快照和无法正常直播: 问题原因分析 通过上工控机发现是由于磁盘空间被占满导致的软件运行收到影响. 解决问题分析 由于录像文件 ...