OPN48 / cnlunar

农历,中国农历历法项目,无需数据库环境,以《钦定协纪辨方书》为核心的python3 农历、黄历、二十四节气、节假日、星次、每日凶煞、每日值神、农历建除十二神、农历每日宜忌、彭祖百忌、每日五行、二十八星宿、天干地支、农历生辰八字、时辰凶吉等开源项目。
GNU General Public License v3.0
438 stars 126 forks source link

2024年立春算法的年柱没有随节气换 #32

Open charleybaby opened 5 months ago

charleybaby commented 5 months ago

如题,2.4日立春之后依然显示癸卯年。难道是因为今年立春早于农历新年的原因?

cuba3 commented 4 months ago

算法存在争议,不同书籍定义不一样,目前是按《钦定协纪辩方书》春节变年柱,如果希望以立春变更,请在year8Char参数中输入'beginningOfSpring',以下是demo

import datetime import cnlunar

a = cnlunar.Lunar(datetime.datetime(2024, 2, 4, 10, 30), godType='8char') # 常规算法

b = cnlunar.Lunar(datetime.datetime(2024, 2, 4, 10, 30), godType='8char', year8Char='beginningOfSpring') # 八字立春切换算法

orallin commented 4 months ago

如题,2.4日立春之后依然显示癸卯年。难道是因为今年立春早于农历

这个文档上有说

charleybaby commented 4 months ago

算法存在争议,不同书籍定义不一样,目前是按《钦定协纪辩方书》春节变年柱,如果希望以立春变更,请在year8Char参数中输入'beginningOfSpring',以下是demo

import datetime import cnlunar

a = cnlunar.Lunar(datetime.datetime(2024, 2, 4, 10, 30), godType='8char') # 常规算法

b = cnlunar.Lunar(datetime.datetime(2024, 2, 4, 10, 30), godType='8char', year8Char='beginningOfSpring') # 八字立春切换算法

你好,问题就是我一直按照立春切换算法,year8Char='beginningOfSpring,但是结果是没有切换的,所以才问

cuba3 commented 4 months ago

算法存在争议,不同书籍定义不一样,目前是按《钦定协纪辩方书》春节变年柱,如果希望以立春变更,请在year8Char参数中输入'beginningOfSpring',以下是demo import datetime import cnlunar a = cnlunar.Lunar(datetime.datetime(2024, 2, 4, 10, 30), godType='8char') # 常规算法 b = cnlunar.Lunar(datetime.datetime(2024, 2, 4, 10, 30), godType='8char', year8Char='beginningOfSpring') # 八字立春切换算法

你好,问题就是我一直按照立春切换算法,year8Char='beginningOfSpring,但是结果是没有切换的,所以才问

我看了一下源码,好像是之前提出这个需求的人额外提了立春在春节前,立春变年柱的需求,我删掉一个需求即可

cuba3 commented 4 months ago

算法存在争议,不同书籍定义不一样,目前是按《钦定协纪辩方书》春节变年柱,如果希望以立春变更,请在year8Char参数中输入'beginningOfSpring',以下是demo import datetime import cnlunar a = cnlunar.Lunar(datetime.datetime(2024, 2, 4, 10, 30), godType='8char') # 常规算法 b = cnlunar.Lunar(datetime.datetime(2024, 2, 4, 10, 30), godType='8char', year8Char='beginningOfSpring') # 八字立春切换算法

你好,问题就是我一直按照立春切换算法,year8Char='beginningOfSpring,但是结果是没有切换的,所以才问

我看了一下源码,好像是之前提出这个需求的人额外提了立春在春节前,立春变年柱的需求,我删掉一个需求即可

算法存在争议,不同书籍定义不一样,目前是按《钦定协纪辩方书》春节变年柱,如果希望以立春变更,请在year8Char参数中输入'beginningOfSpring',以下是demo import datetime import cnlunar a = cnlunar.Lunar(datetime.datetime(2024, 2, 4, 10, 30), godType='8char') # 常规算法 b = cnlunar.Lunar(datetime.datetime(2024, 2, 4, 10, 30), godType='8char', year8Char='beginningOfSpring') # 八字立春切换算法

你好,问题就是我一直按照立春切换算法,year8Char='beginningOfSpring,但是结果是没有切换的,所以才问

刚好,有没有算法引用的书籍,这个参数我加的也很迷,比如2月3日是兔年腊月大廿四,那2月4日变年柱就变成龙年腊月大廿五,那2015年还没过立春又会出现一个腊月大廿五(2025年1月24日)这个要怎么显示?

charleybaby commented 4 months ago

算法存在争议,不同书籍定义不一样,目前是按《钦定协纪辩方书》春节变年柱,如果希望以立春变更,请在year8Char参数中输入'beginningOfSpring',以下是demo import datetime import cnlunar a = cnlunar.Lunar(datetime.datetime(2024, 2, 4, 10, 30), godType='8char') # 常规算法 b = cnlunar.Lunar(datetime.datetime(2024, 2, 4, 10, 30), godType='8char', year8Char='beginningOfSpring') # 八字立春切换算法

你好,问题就是我一直按照立春切换算法,year8Char='beginningOfSpring,但是结果是没有切换的,所以才问

我看了一下源码,好像是之前提出这个需求的人额外提了立春在春节前,立春变年柱的需求,我删掉一个需求即可

算法存在争议,不同书籍定义不一样,目前是按《钦定协纪辩方书》春节变年柱,如果希望以立春变更,请在year8Char参数中输入'beginningOfSpring',以下是demo import datetime import cnlunar a = cnlunar.Lunar(datetime.datetime(2024, 2, 4, 10, 30), godType='8char') # 常规算法 b = cnlunar.Lunar(datetime.datetime(2024, 2, 4, 10, 30), godType='8char', year8Char='beginningOfSpring') # 八字立春切换算法

你好,问题就是我一直按照立春切换算法,year8Char='beginningOfSpring,但是结果是没有切换的,所以才问

刚好,有没有算法引用的书籍,这个参数我加的也很迷,比如2月3日是兔年腊月大廿四,那2月4日变年柱就变成龙年腊月大廿五,那2015年还没过立春又会出现一个腊月大廿五(2025年1月24日)这个要怎么显示?

你好,书籍我不太清楚。只知道有种通识是立春换年柱,今年是比较少见的立春在新年之前。2025年的腊月有的写成十二月(小)廿五,用大小区分。

cuba3 commented 4 months ago

算法存在争议,不同书籍定义不一样,目前是按《钦定协纪辩方书》春节变年柱,如果希望以立春变更,请在year8Char参数中输入'beginningOfSpring',以下是demo import datetime import cnlunar a = cnlunar.Lunar(datetime.datetime(2024, 2, 4, 10, 30), godType='8char') # 常规算法 b = cnlunar.Lunar(datetime.datetime(2024, 2, 4, 10, 30), godType='8char', year8Char='beginningOfSpring') # 八字立春切换算法

你好,问题就是我一直按照立春切换算法,year8Char='beginningOfSpring,但是结果是没有切换的,所以才问

我看了一下源码,好像是之前提出这个需求的人额外提了立春在春节前,立春变年柱的需求,我删掉一个需求即可

算法存在争议,不同书籍定义不一样,目前是按《钦定协纪辩方书》春节变年柱,如果希望以立春变更,请在year8Char参数中输入'beginningOfSpring',以下是demo import datetime import cnlunar a = cnlunar.Lunar(datetime.datetime(2024, 2, 4, 10, 30), godType='8char') # 常规算法 b = cnlunar.Lunar(datetime.datetime(2024, 2, 4, 10, 30), godType='8char', year8Char='beginningOfSpring') # 八字立春切换算法

你好,问题就是我一直按照立春切换算法,year8Char='beginningOfSpring,但是结果是没有切换的,所以才问

刚好,有没有算法引用的书籍,这个参数我加的也很迷,比如2月3日是兔年腊月大廿四,那2月4日变年柱就变成龙年腊月大廿五,那2015年还没过立春又会出现一个腊月大廿五(2025年1月24日)这个要怎么显示?

你好,书籍我不太清楚。只知道有种通识是立春换年柱,今年是比较少见的立春在新年之前。2025年的腊月有的写成十二月(小)廿五,用大小区分。

大小区分的是农历大小月,和第一个第二个无关……就是立春换年柱和正月建寅有所冲突就是,最新节点已直接强更,但这个算法没有出处,有逻辑上的错误,这个开源项目是我厦大的毕设,其余部分都有引用书籍内容,这个立春年柱实在是一个坑。《钦定协纪辨方书》当年就是将各种历书做大一统,为什么为“钦定”,即人皇为天子,天子定历法。

orallin commented 4 months ago

【结论】:不是一到立春就换太岁(即换年柱)的

因为我司就是做国学项目的,所以有八字排盘软件,八字里新旧太岁的切换在24年2月4日 16点26分53秒,因为客观原因导致的误差会导致算法层面也会有误差,这种误差对最终结果不太有影响。如果对四柱有刚需,专业的命理师也会有倒推出准确时间的方法,这个问题不大的。

cuba3 commented 4 months ago

【结论】:不是一到立春就换太岁(即换年柱)的

因为我司就是做国学项目的,所以有八字排盘软件,八字里新旧太岁的切换在24年2月4日 16点26分53秒,因为客观原因导致的误差会导致算法层面也会有误差,这种误差对最终结果不太有影响。如果对四柱有刚需,专业的命理师也会有倒推出准确时间的方法,这个问题不大的。

客观地讲,“命书”和《历书》本来就不一样,”命书“借用《历书》为了取整,构想设计出了一颗与木星逆行的太岁,木星11.86年太岁12年,我这个项目其实只是毕业设计,基于论文层面,肯定是要基于比较统一可信矛盾较少的书籍来写,有所引用。而《历书》在乾隆时期随着《四库全书 - 钦定协纪辨方书》的编撰,统一了历法两百多年,沿用至今自然也更权威。关于国学内容不是本项目的初衷,所以项目最多也只到日家范畴,再进时分秒也不通用。