儒略日序与日柱计算
了解民用出生日期如何转成连续日序,再按校验过的基准日计算日柱,避免正午、换日与取整造成一天误差。
概览
日柱需要连续时间轴,不能只靠逐月查表。先确认原始历法、出生地与采用的八字换日界线,再把有效日期转成定义清楚的儒略日或整数日序,以校验过的干支基准日计算日差,最后对六十取模。天文儒略日从 UTC 正午换日,民用日期通常从午夜开始,部分八字流派又以 23:00 换日;若未先统一这三层约定,即使公式看似正确,也可能让整个日柱偏移一天。
概念速览
- 日序用途
- 把不同年月放在同一条连续时间轴
- 天文儒略日
- 以 UTC 正午为换日点
- 必要规格
- 明确的整数日序与取整约定
- 循环算法
- 相对基准日的日差对 60 取模
- 八字前置步骤
- 先应用所选本地换日界线
- 常见错误
- 半天或一天的无声偏移
连续日序先消除月份与历法的不规则
民用月份长短不同,闰年会增加日期,历史记录也可能使用不同历法。把已验证的日期转成连续日序,才能稳定计算任意两天相隔多少日。
原始日期和历法标签仍须保留。日序只是计算层的标准化结果,不能取代史料来源。
- 先按原始历法验证日期是否存在。
- 并列保存原始值与标准化值。
儒略日与民用整数日的换日点并不相同
天文儒略日在 UTC 正午进入下一个编号;不少程序会使用经午夜调整的儒略日序,但加半天、取整或编号方式可能不同。
计算六十日循环前,必须说明时间基准、取整方法与有效八字日。把不同约定混用,是日柱差一天最常见的来源。
- 记录正午、午夜与 floor 规则。
- 不可只复制公式而忽略它的纪元约定。
以可靠基准日定位,再对六十取模
选择在同一历法与换日规则下、干支日已有独立证据的基准日期。目标日序减去基准日序,加上基准索引后,使用非负的六十余数得到日柱位置。
基准日期、索引从零或一开始,以及取模实现是一组不可拆开的契约。只改其中一项,仍会产生看似合理但整体错位的干支名称。
- 将基准日期与循环索引一起版本化。
- 处理早于基准日的负余数。
用相邻日与长距离不变式验证实现
可靠算法应证明有效日期的前后一天恰好退进一位,相隔六十日回到同一组干支,而且闰日与历法改革不会打断连续循环。
还要测试本地午夜、所选 23:00 换日、时区偏移切换与历史历法转换。四柱确定后才进入命理解读。
- 在闰日与改革日期两侧放置基准测试。
- 把时间计算测试与解读内容分开。
来源与编辑依据
- U.S. Naval Observatory: Julian Date Converter美國海軍天文台說明儒略日期以連續日數表達時間,並提供格里曆與儒略曆輸入換算;天文儒略日的正午起算須在整數日序前明確正規化美国海军天文台用于把格里历、儒略历日期转换为连续儒略日期时间轴的官方天文参考。
- OpenFate 编辑方法说明產品以版本化基準日、非負六十取模及前後一日與六十日不變式校驗日柱,並把曆法、時區與八字換日規則分層處理OpenFate 将确定性的排盘计算、传统解释框架与现代编辑说明分开处理。