递归火山软件开发平台
标题:
日柱1900-2200年算法(301年大全)
[打印本页]
作者:
山梦
时间:
2023-8-19 13:54
标题:
日柱1900-2200年算法(301年大全)
日柱1900-2200年算法(301年大全)
----------------------------------------------------------
八字四柱中算”日柱”算法最难,网络上查找也不全面,有些1900年算错的,2100年后又没有了。
下面是其中的一种
----------------------------------------------------------
<火山程序 类型 = "通常" 版本 = 1 />
包 日柱.程序
类 日柱_类 <公开 @全局类 = 真>
{
变量 日柱天干 <公开 静态 类型 = 文本型>
变量 日柱地支 <公开 静态 类型 = 文本型>
方法 日柱_法 <公开 静态 @禁止流程检查 = 真>
{
变量 天干数组 <类型 = "文本型 [10]" 值 = {"甲","乙","丙","丁","戊","己","庚","辛","壬","癸"}>
变量 地支数组 <类型 = "文本型 [12]" 值 = {"子","丑","寅","卯","辰","巳","午","未","申","酉","戌","亥"}>
变量 A <类型 = "整数 [301]"
值 = {9,14,19,21,30,35,40,45,51,56,1,6,12,17,22,27,33,38,43,48,54,59,4,9,15,20,25,30,36,41,46,51,57,2,7,12,18,23,28,33,39,44,49,54,0,5,10,15,21,26,31,36,42,47,52,57,3,8,13,18,24,29,34,39,45,50,55,0,6,11,16,21,27,32,37,42,48,53,58,3,9,14,19,24,30,35,40,45,51,56,1,6,12,17,22,27,33,38,43,48,54,59,4,9,15,20,25,30,36,41,46,51,57,2,7,12,18,23,28,33,39,44,49,54,0,5,10,15,21,26,31,36,42,47,52,57,3,8,13,18,24,29,34,39,45,50,55,0,6,11,16,21,27,32,37,42,48,53,58,3,9,14,19,24,30,35,40,45,51,56,1,6,12,17,22,27,33,38,43,48,54,59,4,9,15,20,25,30,36,41,46,51,57,2,7,12,18,23,28,33,38,43,48,53,59,4,9,14,20,25,30,35,41,46,51,56,2,7,12,17,23,28,33,38,44,49,54,59,5,10,15,20,26,31,36,41,47,52,57,2,8,13,18,23,29,34,39,44,50,55,0,5,11,16,21,26,32,37,42,47,53,58,3,8,14,19,24,29,23,40,45,50,56,1,6,11,17,22,27,32,38,43,48,53,59,4,9,14,20,25,30,35,41,46,51,56,2,7,12,17,22}>
变量 月 <类型 = "整数 [12]" 值 = {6,37,0,31,1,32,2,33,4,34,5,35}>
变量 年系数 <类型 = 整数>
变量 日柱系数 <类型 = 整数>
变量 日干数 <类型 = 整数>
变量 日支数 <类型 = 整数>
如果 (公历年 == 1900 && 公历月 < 3)
{
年系数 = 4
}
否则
{
如果 (公历月 < 3)
{
年系数 = A [公历年 - 1900 - 1]
}
否则
{
年系数 = A [公历年 - 1900]
}
}
日柱系数 = 年系数 + 月 [公历月 - 1] + 公历日
如果 (日柱系数 > 60)
{
日柱系数 = 日柱系数 - 60
}
否则
{
日柱系数 = 日柱系数
}
如果 (日柱系数 > 10)
{
日干数 = 日柱系数 % 10
}
否则
{
日干数 = 日柱系数
}
如果真 (日干数 == 0)
{
日干数 = 10
}
如果 (日柱系数 > 12)
{
日支数 = 日柱系数 % 12
}
否则
{
日支数 = 日柱系数
}
如果真 (日支数 == 0)
{
日支数 = 12
}
日柱天干 = 天干数组 [日干数 - 1]
日柱地支 = 地支数组 [日支数 - 1]
}
}
(, 下载次数: 21)
上传
点击文件名下载附件
(, 下载次数: 26)
上传
点击文件名下载附件
作者:
山梦
时间:
2023-8-19 14:12
本帖最后由 山梦 于 2023-8-19 14:17 编辑
这是日柱的另一种算法,这种算法的好处是,知道公纪开始年元月元日的天干地支,自己修改下数字,就可以算出100年。其中“主窗口.Gy”,是指公历年!
主窗口.Gd 是公历日
主窗口.Gm 是公历月
公历数据_类.公历_每月总天数→是公历月数累加:31,59,90……
(, 下载次数: 20)
上传
点击文件名下载附件
------------------------------------------------------------
以上算法对错,望大佬指导订正
作者:
wyc00
时间:
2023-8-20 11:37
测试正确,年柱,月柱算法也发出来啊
作者:
山梦
时间:
2023-8-20 14:13
本帖最后由 山梦 于 2023-8-20 14:15 编辑
年柱算法很简单的。我这种算法,直接用农历年来算了。公历年另外算,也很简单的-----------------------------------------------------------
<火山程序 类型 = "通常" 版本 = 1 />
变量 天干数组 <公开 静态 类型 = "文本型 [12]" 值 = {"甲","乙","丙","丁","戊","己","庚","辛","壬","癸","甲","乙"}>
变量 地支数组 <公开 静态 类型 = "文本型 [14]" 值 = {"子","丑","寅","卯","辰","巳","午","未","申","酉","戌","亥","子","丑"}>
<火山程序 类型 = "通常" 版本 = 1 />
变量 年柱 <类型 = 整数>
变量 年支 <类型 = 整数>
// -----年柱--------
年柱 = (农历年 - 3) % 10
如果真 (年柱 == 0)
{
年柱 = 10
}
年柱天干 = 天干数组 [年柱 - 1]
年支 = (农历名 - 3) % 12
如果真 (年支 == 0)
{
年支 = 12
}
年柱地支 = 地支数组 [年支 - 1]
-------------------------------------
月柱算法要根据 24节气中的“节”来确定 农历月。玄学的一般都是以节中的“立春”为正月,地支为寅。”惊蛰“为二月,地支为”卯“……以此类推,再用”五遁法“算出干。
作者:
沉默流星
时间:
2023-8-20 14:34
山梦 发表于 2023-8-20 14:13
年柱算法很简单的。我这种算法,直接用农历年来算了。公历年另外算,也很简单的-------------------------- ...
可以啊
欢迎光临 递归火山软件开发平台 (https://bbs.voldp.com/)
Powered by Discuz! X3.4