递归火山软件开发平台

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 火山 源码 类库
查看: 1124|回复: 4
打印 上一主题 下一主题

[视窗] 日柱1900-2200年算法(301年大全)

[复制链接]

32

主题

455

帖子

2270

积分

金牌会员

Rank: 6Rank: 6

积分
2270
跳转到指定楼层
楼主
发表于 2023-8-19 13:54:01 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
日柱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]

    }
}





回复

使用道具 举报

32

主题

455

帖子

2270

积分

金牌会员

Rank: 6Rank: 6

积分
2270
沙发
 楼主| 发表于 2023-8-19 14:12:26 | 只看该作者
本帖最后由 山梦 于 2023-8-19 14:17 编辑

这是日柱的另一种算法,这种算法的好处是,知道公纪开始年元月元日的天干地支,自己修改下数字,就可以算出100年。其中“主窗口.Gy”,是指公历年!  
主窗口.Gd 是公历日
主窗口.Gm 是公历月
公历数据_类.公历_每月总天数→是公历月数累加:31,59,90……



------------------------------------------------------------
以上算法对错,望大佬指导订正


回复

使用道具 举报

21

主题

145

帖子

878

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
878
板凳
发表于 2023-8-20 11:37:07 | 只看该作者
测试正确,年柱,月柱算法也发出来啊
回复

使用道具 举报

32

主题

455

帖子

2270

积分

金牌会员

Rank: 6Rank: 6

积分
2270
地板
 楼主| 发表于 2023-8-20 14:13:53 | 只看该作者
本帖最后由 山梦 于 2023-8-20 14:15 编辑

年柱算法很简单的。我这种算法,直接用农历年来算了。公历年另外算,也很简单的-----------------------------------------------------------
<火山程序 类型 = "通常" 版本 = 1 />
变量 天干数组 <公开 静态 类型 = "文本型 [12]" 值 = {"甲","乙","丙","丁","戊","己","庚","辛","壬","癸","甲","乙"}>
变量 地支数组 <公开 静态 类型 = "文本型 [14]" 值 = {"子","丑","寅","卯","辰","巳","午","未","申","酉","戌","亥","子","丑"}>
<火山程序 类型 = "通常" 版本 = 1 />

变量 年柱 <类型 = 整数>
变量 年支 <类型 = 整数>
// -----年柱--------
年柱 = (农历年 - 3) % 10
如果真 (年柱 == 0)
{
    年柱 = 10
}
年柱天干 = 天干数组 [年柱 - 1]
年支 = (农历名 - 3) % 12
如果真 (年支 == 0)
{
    年支 = 12
}
年柱地支 = 地支数组 [年支 - 1]
-------------------------------------
月柱算法要根据  24节气中的“节”来确定 农历月。玄学的一般都是以节中的“立春”为正月,地支为寅。”惊蛰“为二月,地支为”卯“……以此类推,再用”五遁法“算出干。




回复

使用道具 举报

78

主题

750

帖子

4403

积分

贵宾

Rank: 9Rank: 9Rank: 9

积分
4403
QQ
5#
发表于 2023-8-20 14:34:30 | 只看该作者
山梦 发表于 2023-8-20 14:13
年柱算法很简单的。我这种算法,直接用农历年来算了。公历年另外算,也很简单的-------------------------- ...

可以啊
欢迎加入火山安卓交流群:623136156
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|递归火山软件开发平台 ( 鄂ICP备18029190号 )

GMT+8, 2024-6-16 10:47 , Processed in 0.094418 second(s), 21 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表