iOS 根據農歷日期 獲取當前的農歷年份 即 干支紀年法算農歷年
前言:我國古代是用干支紀年的,近代史上提到的甲午戰爭、戊戌變法、辛亥革命等名詞就是干支紀年。所謂干支就是十天干和十二地支的簡稱。天干、地支按照一定規則(單配單,雙配雙)可以搭配成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]]; }
項目地址
參考:
1. http://www.ht88.com/article/article_5190_1.html
2. http://www.360doc.com/content/14/0122/14/802494_347109249.shtml
posted on 2018-03-12 15:29 ACM_Someone like you 閱讀(967) 評論(0) 收藏 舉報
浙公網安備 33010602011771號