我为巴子打造了计算器——中国"四柱"出世图.
不论你对解释传统的看法如何(我也会了解这一点), 输入数学变成了一个真正深刻的时区问题, 而这正是这个文章的目的。
如果你曾经想过"时空区,能有多难"——这是一次对到底有多难的巡演,用工作类型脚本.
问题BaZi将日分为12个2小时"branches",因此你的出世时间是图中的4个支柱之一.
错误的时间,你得到一个不同的图表——并非略有不同,绝对不同。
我能找到的每个计算器 都从你的出生证上输入系统时间 但是这个传统比时区早了大约两千年;它显然意味着太阳时间——太阳实际上超过你的发源地。
时钟时间和太阳时间的差异比大多数人认为的要多,差异分解成三部分:
1.
日光节能时间——也是历史.
你需要在出生日期生效的DST规则,而不是今天的.
中国从1986-91年开始进行了被遗忘的DST实验;哈尔滨在1949年以前保留了自己的区域. 1988年7月生于北京的,你的证照比标准时间提前了1小时,没有现代的查询会告诉你这一点.
2.
经度。
太阳时间从你所在区域的标准中线每分4分 中国跨越了五个地理区域,但使用一个钟表——出自于于吕姆奇,你的钟表比太阳提前了大约两个小时.
这不仅仅是一个中国的怪事:温哥华坐落在123°W的地平线为120°W的地平线上,所以再过12分钟,到处都是,总是这样.
3.
时间的等式。
由于轨道偏心和轴向倾斜,太阳本身全年运行速度快或慢至±16分.
NOAA发布一个精确到不到一分钟的近似: Stack all three and a July birth in温哥华需要~78分钟的校正.
这很容易是一个不同的小时分支——不同的图表.
获取历史抵消而不传输一个 tz 数据库。
节点被ICU所支持,它运送了完整的IANA tzdb——包括历史怪事.
诀窍是,在任意区域,快乐地格式化一个UTC瞬间,从格式化的部件中,您可以恢复偏移:Feed it and a 1988 timetamp and you get the 1986–91 DST hour back, for free.
没有依赖性,没有数据文件,它与运行时间的ICU保持对流.
向另一方向走去——墙上时间到UTC——有典型的鸡蛋问题(需要抵消来计算瞬间,但抵消取决于瞬间).
除了一个小时的DST空隙外 有两个固定点的迭接器 到处都解决了问题 毕竟没有确切的答案 有个更微妙的藏在"DST活动吗?"中.
JavaScript没有API,因此我在Jan 1,Jul 1上和出生瞬间对区间抵消进行抽样,并将最小值作为标准抵消——DST总是将时钟向前移动,所以最小值是两个半球的标准时间.
因为摩洛哥在斋月期间对DST持负面态度, 两个边缘的箱子我没想到会来 日期线.
查塔姆群岛坐落于西经176.5°,使用UTC+12:45.
做天真的事——从格林威治起4分钟的经纬线——和计算出来的当地平均太阳时间全天放假。
在无声地腐蚀了日之柱的生平图中,日之柱是全读所挂起的柱子.
修补是将经度正常化到区标准地平线的±180°以内,而不是格林威治:需要加分的圆圈.
UI将这三部分显示为附加表: DST + 经纬度 + 等分时间 = 总计.
每一个部分独立地绕来绕去,桌会停止作总结——每分一分就让整件事看起来破碎了.
因此,四舍五入的部分被迫与四舍五入的总和完全相加,剩余部分被分配到其中