美文网首页
NSDate转换公农历、八字干支

NSDate转换公农历、八字干支

作者: Geniune | 来源:发表于2019-12-13 16:12 被阅读0次

    先上GitHub链接:

    https://github.com/Geniune/NSDateLunar

    方法调用:

    NSDate *date = [NSDate date];  //可以初始化自己需要的NSDate对象,不得早于1901年
    
    NSLog(@"公历:%zd年%zd月%zd日%zd点", [date year], [date month], [date day], [date hour]);  //输出公历信息
    NSLog(@"农历:%@年%@月%@%@时", [date yearStream], [date chinaMonth], [date chinaDay], [date chinaHour]);  //输出农历信息
    NSLog(@"干支:%@ %@ %@ %@", [date yearStream], [date monthStream], [date dayStream], [date hourStream]);  //输出干支八字
    NSLog(@"五行:%@ %@ %@ %@", [date yearElement], [date monthElement], [date dayElement], [date hourElement]);  //输出干支对应五行
    

    转换原理:

    一、钟表时

    • 以地球自转运动一周为基础的时间单位,称为:“日”;
    • 以月球绕地球公运动一周为基础的时间单位,称为“月”;
    • 以地球绕太阳公转运动一周为基础的时间单位,称为“年”;

    二、回归年/恒星年

    地球围绕太阳运动被称为地球公转,公转的时间为一年,但是在地球公转的过程中存在两种明显周期,分别为“回归年”和“恒星年”


    回归年图示.jpg
    • 回归年(tropical year):指的是太阳连续两次通过春分点的时间间隔,也就是太阳中心自西向东沿着黄道从春分点运动一周所经历的时间,又称为太阳年(solar year),回归年是历年法且每个回归年的长短并不相等,采用的是太阳时。


      恒星年图示.jpg
    • 恒星年:指的是从地球上观测,以太阳和某一个恒星在同一位置上为起点到太阳再次回到这个位置所需的实际时间,采用的是钟表时。


      岁差图示.png
    • 岁差:真太阳时与钟表时累计一年的时间差,称为“岁差”,由于地球的自转轴在宇宙空间中并不保持固定的方向,岁差是地球公转和地轴运动相结合的结果,这样的结果决定了二分二至地球的位置不是定点,而是在公转轨道上不断向西移的动点,从而导致地球公转一周≠太阳直射点纬度变化一周。

    三、二十四节气

    太阳从春分点(黄经0°)出发,此时太阳垂直照射赤道;之后每15°为一个节气,运行一周经过24个节气正好360°后回到春分点,为一回归年。
    古人又将黄道划分为4季,古时约5日为一候,6候为一气,2气为一节,3节为一季,4季为一年。也就是说一回归年有:

    • 4个季(春、夏、秋、冬);
    • 12个节(立春、惊蛰、清明、立夏、芒种、小暑、立秋、白露、寒露、立冬、大雪、小寒);
    • 12个气(雨水、春分、谷雨、小满、夏至、大暑、处暑、秋分、霜降、小雪、冬至、大寒);
    • 72个候
    • 约为365日5时48分45.6秒

    四、闰年与闰月

    一回归年较一恒星年略短些,尽管天文学家把历年的平均时长安排的尽可能与回归年相近,但是两者相差的时间每四年积累成一天,将这一天加在某一年的2月份里,这年就被称为“闰年”;
    农历将一年定为354或355日,两者相差的时间平均每三年积累成一个月,将这一月加在某一年里,这个月就被称为“闰月”。

    五、天干地支

    1.干支

    天干地支,简称为“干支”。源于中国古时对天象的观测,简化后的干支为:

    • 10天干(甲、乙、丙、丁、戊、己、庚、辛、壬、癸);
    • 12地支(子、丑、寅、卯、辰、巳、午、未、申、酉、戌、亥)。

    2.干支纪时法

    干支纪时法就是用天干地支组成的组合按照既定的标记时间来表示纪时的一种方法。

    • 中国传统历法中干支纪时的制度称为“干支历”,就是用干支的60个组合来依次、循环地纪年、纪月、纪日、纪时辰;
    • 这里的时辰约为现在的2小时,一天分为12时辰;
    • 干支纪时,和现代计时方法不同的是,古代的“子时”指的是现代前一天晚上23:00至第二天的凌晨1:00,并非00:00至2:00,又被称为“时柱”;
    • 干支纪日,只知道当前的公历的情况下想直接计算某一天对应的干支纪日是非常困难的,通常需要通过某一天的干支基准来计算,由于现代计算机和互联网的广泛应用,干支纪日可以直接通过一些万年历应用来获取,又被称为“日柱”;
    • 干支纪月,只与24节气中的“节”有关联,与公历和农历并没有太大关系,因此干支纪月的交替是以某个节为基准的,逢“节”则月柱向后推,又被称为“月柱”;
    • 干支纪年,和干支纪月相同干支纪年的交替是以24节气中的“立春”为基准的,又被称为“年柱”。

    六、八字

    指的是用干支来准确记录年、月、日、时的方式,由“年干+年支”、“月干+月支”、“日干+日支”、“时干+时支”共八个干支所组成,形成“年柱+月柱+日柱+时柱”的八字组合。

    以上知识点主要来自于维基百科:

    维基百科-回归年
    维基百科-格林尼治标准时间
    维基百科-恒星年
    维基百科-节气
    维基百科-干支
    维基百科-八字
    简书贴-高氏日柱公式

    如果本文对你有所帮助,记得点个赞哈

    相关文章

      网友评论

          本文标题:NSDate转换公农历、八字干支

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