你的排盘工具,真太阳时算对了吗?
Three birth times — a reproducible conformance test
拿三个已知答案的出生时间去跑一遍。钟表时间换算真太阳时只有三项——历史夏令时、与时区参考经线的经度差、 均时差——每一项都有可核对的正确答案。下面给出三个出生时间、完整算式,以及正确的引擎必须返回的那根时柱。 全程约十分钟。
先说清「对」字,因为这个字常被用成「和我这一派一致」。这里不是。盘怎么解是文化传统,信多少随你; 但输入层是算术:给定日期、钟表时间、时区、经度,真太阳时只有一个正确答案,谁都能核到分钟。 本页每个数字都由驱动青鸾信排盘的同一批模块在构建时算出; 校正本身的原理见真太阳时页。
要加起来的是哪三项
历史夏令时。不是今天的规则,是出生当日生效的那一条。中国大陆 1986–1991 年推行过一段 现在几乎没人记得的夏令时;那几年的北京出生证明比标准时快一小时,而今天的时区下拉框不会告诉你这件事。
经度差。每偏离时区参考经线 1°,太阳时就差 4 分钟。中国横跨五个地理时区却用一个钟; 温哥华在西经 123°,所在时区的参考经线却是西经 120°。这一项对同一地点是固定值,所以也是最常被实现的一项。
均时差。太阳自己一年里时快时慢,摆动约 −15 到 +16 分钟,来自椭圆轨道与地轴倾斜。 这一项最常被当成舍入误差扔掉。它最多相当于一个时辰的四分之一——下面第三例里,它就是两张盘之间的全部差别。
三个测试用例
每例都给了精确输入。把它输进你在用的排盘工具,比对返回的时柱即可。(三例统一按女命计算;性别只影响大运顺逆,不影响四柱本身。)
例 1 · 北京,1988 年 6 月 15 日 07:30
考点:历史夏令时——中国 1986–1991 年实行过夏令时
输入:1988-06-15 07:30 · Asia/Shanghai · 116.41°E
| 分量 | 分钟 |
|---|---|
| 夏令时 | −60.00 |
| 经度差(116.41°E 对时区参考经线) | −14.36 |
| 均时差 | −0.45 |
| 总校正 | −74.81 |
真太阳时 06:15,卯时,时柱辛卯。
各个不完整的实现分别返回:完全不校正是 07:30(壬辰)、 只做经度差是 07:15(壬辰)、经度差加夏令时是 06:15(辛卯)。最后那一档已经落在正确的时辰里——这一例是被夏令时那一项决定的。
例 2 · 温哥华,1995 年 7 月 20 日 12:00
考点:夏令时叠加时区西缘——以及它对下游断语做了什么
输入:1995-07-20 12:00 · America/Vancouver · 123.12°W
| 分量 | 分钟 |
|---|---|
| 夏令时 | −60.00 |
| 经度差(123.12°W 对时区参考经线) | −12.48 |
| 均时差 | −6.01 |
| 总校正 | −78.49 |
真太阳时 10:41,巳时,时柱乙巳。
各个不完整的实现分别返回:完全不校正是 12:00(丙午)、 只做经度差是 11:47(丙午)、经度差加夏令时是 10:47(乙巳)。最后那一档已经落在正确的时辰里——这一例是被夏令时那一项决定的。
例 3 · 乌鲁木齐(北京时间),2001 年 11 月 3 日 09:00
考点:均时差——这一例里它把答案又推回边界另一侧;而校正后离边界太近,本就不该硬给答案
输入:2001-11-03 09:00 · Asia/Shanghai · 87.62°E
| 分量 | 分钟 |
|---|---|
| 夏令时 | 0.00 |
| 经度差(87.62°E 对时区参考经线) | −129.52 |
| 均时差 | +16.35 |
| 总校正 | −113.17 |
真太阳时 07:06,辰时,时柱庚辰。而且距下一条边界只有 6 分钟——见下文。
各个不完整的实现分别返回:完全不校正是 09:00(辛巳)、 只做经度差是 06:50(己卯)、经度差加夏令时是 06:50(己卯)。最后那一档仍然是错的——这一例是被均时差那一项决定的。
分歧总表
同样三张出生证明,四个实现层级,各自返回的时柱:
| 实现层级 | 例 1 | 例 2 | 例 3 |
|---|---|---|---|
| 照抄钟表时间 | 壬辰 | 丙午 | 辛巳 |
| 只做经度差 | 壬辰 | 丙午 | 己卯 |
| 经度差 + 夏令时 | 辛卯 | 乙巳 | 己卯 |
| 三项齐全 | 辛卯 | 乙巳 | 庚辰 · 不确定 |
最后一行以上的每一行,都是有人正拿在手里的盘。而这三例没有一个是刁钻输入:夏令时年份的大陆出生、 时区西缘的海外出生、以及 1949 年以来一直用北京时间的省份的出生。
时柱错了,究竟错掉什么
不止错一根柱子。把例 2 两张盘都推到底,未校正对已校正:
| 未校正(12:00) | 已校正(10:41) | |
|---|---|---|
| 时柱 | 丙午 | 乙巳 |
| 日主 | 壬 | 壬 |
| 强弱 | 偏弱 | 偏强 |
| 喜用五行 | 金、水 | 土、火 |
| 神煞 | 3 | 5,多出 天乙贵人(时支)、驿马(时支) |
| 起运 | 2001-10-30 | 2001-11-09 |
强弱判定整个翻面,喜用五行跟着翻面——未校正那张盘推荐的,正是校正后要避开的。 几乎所有下游结论,不论哪一派,都压在这一行上。而这一行压在 78 分钟的算术上。
什么时候诚实的答案是「说不准」
例 3 校正后距边界 6 分钟。这在人工记录的出生时间的噪声之内—— 极少有记录准到 6 分钟,而均时差近似本身也只准到约 1 分钟。 所以诚实的输出不是「庚辰」,而是两张盘并列标明: 记录的钟表时间挪 7 分钟,就到了另一侧。
| 辰时 | 卯时 | |
|---|---|---|
| 时柱 | 庚辰 | 己卯 |
| 年柱、月柱、日柱 | 完全相同 | |
| 日主、强弱、喜用 | 完全相同 | |
| 大运干支序列 | 完全相同 | |
| 多出的神煞 | — | 桃花(时支) |
| 起运 | — | 晚 10 天 |
这张表比一个自信的错答案有用得多,代价不过是多调一次纯函数。青鸾信在校正后落入边界 ±8 分钟内时一律给出这张对照。
怎么验收你手上的排盘工具
- 输入例 1。若返回壬辰,说明没做历史夏令时——最常见的失败,也最好查。
- 输入例 2。返回丙午是同一个毛病;返回乙巳说明夏令时与经度差都做了。接着看它给不给强弱判定,再与未校正那次对照。
- 输入例 3。返回己卯说明漏了均时差;返回庚辰说明三项齐全。
- 看例 3 有没有被标为贴近边界。只丢给你一根时柱、不加任何说明的工具,是在宣称输入数据并不具备的精度。
- 找那张拆解表。把三个分量列成加法表的工具可以被审计;只给一个校正后时刻、或什么都不给的,是要你信它一句话。还有一个反向检查:如果时区选择框里只有寥寥几项而不是 IANA 时区,历史规则就不可能对——「GMT+8」这点信息,不足以判断那是不是 1988 年的北京。
算得都对,也可能不一致的地方
不是所有分歧都是错误,分不清这一点的测试也就没什么价值。晚子时(23:00–24:00)一派归当日、一派归次日, 这是真实的约定分歧,不是错;错的是不告诉你用了哪一派。均时差近似算法之间差不到一分钟, 城市中心点与具体医院地址之间差一两分钟——两者都只在紧贴边界时才有意义,这正是边界提示存在的理由。 我们采用的全部约定列在排盘约定页。 但这些都解释不了一小时的差距——一小时的差距只可能是漏了一项。
为什么要公布一份自己也可能不及格的测试
因为另一条路是让人信一个黑盒子,而这个行业的信任问题是自己一点一点挣来的。盘怎么解是传统; 盘算得对不对不是信不信的事。历法换算、历史时区解析、太阳位置、六十甲子,都有对错。 这三例在每次构建时都跑一遍我们的引擎——本页正是由它们的输出生成的,引擎一改,这里的数字就跟着变。 如果你找到一个我们算错的输入,那是一份 bug 报告,我们要:联系方式;更正会公开记在勘误页。
拿你自己的出生数据去排一盘——免费,无需注册。 它会把校正拆成同样三项、在离边界 8 分钟内时把另一侧那盘一并排出, 不知道时辰则计算十二个候选、意见不一处一律留白。校正原理见真太阳时与八字。青鸾信供观照,不做预测。
本页每个数字都由 lib/bazi(与排盘同一批模块)在构建时按上列输入实算得出,没有一处是手抄的。