星辰志
返回观测志

1.11 儒略日

2024.01.01阅读 4 min

核心概念

儒略日(Julian Day, JD)是一种连续计日的系统,从公元前 4713 年 1 月 1 日正午开始,每天递增 1。它不是中国古代的概念,但现代研究中国古代天文学时用它做时间换算。

核心概念

儒略日(Julian Day, JD)是一种连续计日的系统,从公元前 4713 年 1 月 1 日正午开始,每天递增 1。它不是中国古代的概念,但现代研究中国古代天文学时用它做时间换算。

一、为什么需要儒略日

不同文明使用不同历法。直接比较"汉太初元年冬至"和"罗马建城第 700 年某日"几乎不可能。儒略日提供了一个普适的时间标尺:

  • 任何历法中的任何一天,都有唯一的 JD 值
  • JD 值直接相减就是间隔天数
  • 没有闰年、闰月、年号等麻烦

二、儒略日的起算点

Table
项目内容
起点公元前 4713 年 1 月 1 日 12:00 UT
JD 值起点为 JD 0
设计者Joseph Scaliger(1583 年)
命名以设计者父亲 Julius 命名,与儒略历无直接关系

Scaliger 选择这个起点是因为那一年同时是三种历法周期(太阳周 28 年、太阴周 19 年、罗马小纪 15 年)的起点——一个完美的"零年"。

三、简化儒略日

JD 的值非常大(现代日期对应约 2,460,000+),不便日常使用。因此有几种简写:

Table
缩写定义
JD原始儒略日(约 246 万起)
MJD简化儒略日 = JD − 2,400,000.5,从 1858 年 11 月 17 日 0 时起
RJD约化儒略日 = JD − 2,400,000

四、儒略日如何帮助中国古代天文学研究

4.1 干支纪日的换算

中国古代连续记录了三千多年的干支纪日(60 天一循环)。如果知道某个日期是"甲子日",但不知道是哪一轮,可以用 JD 推算。

算法思路:

  1. 任意选择一个已知对应(如公元 2000 年 1 月 1 日是 JD 2451545)
  2. 把古代日期换算到 JD
  3. JD 差除以 60 的余数对应天干地支

4.2 古代天象记录的验证

当史书记载"某年某月某日朔,日有食之",要验证这次日食是否真的发生过,步骤是:

  1. 将古代历法日期转化为 JD
  2. 用现代天文计算反推该 JD 时刻日月位置
  3. 验证是否具备日食条件

4.3 历法精度比较

将不同历法(太初历、大衍历、授时历等)对同一个节气的推步结果都换算为 JD,再和现代计算值比较,就可以定量评价每部历法的精度。

五、JD 日期换算公式(简化版)

对格里历日期 Y 年 M 月 D 日(M>2),儒略日近似计算:

a = floor(Y/100) b = 2 − a + floor(a/4) JD = floor(365.25 × Y) + floor(30.6001 × (M+1)) + D + 1720994.5 + b

实际使用中查阅天文年历或使用计算程序即可,不需要手算。

六、电子工具的取用

现代使用 Python 的 astropy 或命令行工具即可换算,常见的 JD 参考值:

Table
日期JD
公元前 2000 年 1 月 1 日 12:00990806.0
公元前 104 年 1 月 1 日 12:00(太初历颁行前后)1683430.0
公元 2000 年 1 月 1 日 12:00(J2000.0)2451545.0

七、中国古代的等时概念

中国古代也有类似连续计日的体系:

  • 干支纪日:从商代至今不间断的 60 天循环
  • 积年/积日:历法推算中的起算点到目标日期的总天数(如上元积年,见 13.1)

这些虽然和儒略日原理不同,但都可以转化为 JD,实现古今对接。