FreeAstroAPI LogoFreeAstroAPI
返回指南
技术

时区、LMT 和占星精度

为什么 4 分钟误差会改变 Ascendant,以及我们的 API 如何自动处理历史时区变化。

为什么时区会影响整张星盘

仅仅 1 小时误差,就可能让 Ascendant 移动约 15 度,整张星盘都会变。下面是我们如何处理全球时间问题。

风险很高

在占星中,Ascendant 大约每 4 分钟 改变一次。一个简单的 Daylight Savings Time (DST) 1 小时错误,可能导致:

  • Ascendant Sign 错误
  • House Cusps 错误
  • 临界情况下 Moon Nakshatra 错误
  • Dashas timelines 偏移多年

历史背景:LMT 和标准时间

19 世纪末以前,很多地方使用 Local Mean Time (LMT)。当地正午由该地点经度上的太阳位置决定。

例如,Mumbai 的 "noon" 和 Delhi 的 "noon" 并不一样。

标准化的转变

各国采用标准时区的时间不同:

  • USA: Late 1883
  • UK: 1880
  • India: 1906 (Shifted from Madras Time to IST)

如果用现代 "Asia/Kolkata" (+05:30) 去计算 1890 年的星盘,就会出错。那时必须用根据经度计算的 LMT。

我们如何处理:AUTO 模式

当你发送 tz_str="AUTO" 时,API 会执行多步检查:

  1. Geographic Lookup:根据 latitude 和 longitude 找到精确 IANA timezone ID,例如 "America/New_York"
  2. Historical Validation:根据出生年份检查该地区的标准化日期。
  3. Algorithm Selection
    • Modern Dates:使用 IANA 数据库自动处理 DST offsets。
    • Historical Dates:根据精确经度切换到 LMT calculation。

BaZi 时间标准

中文命理对 Hour Pillar 精度要求很高。实践中,使用 Clock Time 还是 Solar Time 有不同派别。我们的 API 支持三个主要标准:

  1. Civil Time (civil):原始本地钟表时间。适合需要和 BaZi-Calculator 等应用保持一致的用户。
  2. Relative Solar Time (true_solar):按经度相对时区子午线修正。它保留日常时间感,同时处理大时区边缘地区。
  3. Absolute Solar Time (true_solar_absolute):纯天文日晷时间 (UTC + Longitude Offset + Equation of Time)。技术上最精确,但可能产生和本地经验不一致的柱。

[!TIP] 在中国、美国这类大国,或巴黎这类时区边界城市计算星盘时,优先使用 Relative Solar

开发建议

  1. 始终使用坐标:城市名有歧义。Lat/Lng 是确定的。API 会优先用坐标判断 timezone。
  2. 信任 AUTO:除非你有可信来源证明某个历史 timezone offset,否则让引擎处理。

继续阅读

全部指南