通过MCP连接 →

输入计算

数学公式

数学公式: 儒略历与公历日期转换计算器
Show calculation steps (1)
  1. Julian date to Julian Day Number

    Julian date to Julian Day Number: 儒略历与公历日期转换计算器

    Same a, y, m substitutions but without the 100/400 century-leap corrections.

广告

结果

换算后的日期
1,582 AD  ·  Month 6  ·  Day 5
(目标历法下)
结果的纪年 1 (AD / CE)
儒略日数(JDN) 2,299,039
日差(公历减儒略历) +10 days

这个计算器能做什么

本工具可在儒略历(公元前 45 年颁行,凡能被 4 整除的年份均为闰年)与公历(即 1582 年改革后的格里历,每 400 年减去 3 个闰日)之间换算日期。你只需按其中一种历法输入日期,工具就会给出另一种历法下对应的日期。这是一种纯天文学/西方历法的换算方法,在世界各地的计算结果完全一致,与所在地区无关。

示意图展示一个儒略历日期和一个公历日期通过中央的儒略日数相连
两种历法都通过共享的儒略日数作为共同参考点进行换算。

使用方法

先选择源历法(即你输入的日期所采用的历法体系),结果将以另一种历法呈现。接着选择纪年(公元 AD/CE 或公元前 BC/BCE),再依次填入年、月、日。计算器会输出换算后的纪年、年、月、日,并附上作为中间值的儒略日数(JDN)以及日差(即在该日期下公历比儒略历领先多少天)。

公式详解

最简洁且精确的换算方式是借助 JDN——这是一种与任何历法都无关的整数日计数。第一步,用标准整数公式(儒略历版本与公历版本各一)把源历法的(年、月、日)转换为 JDN。公历版本为:

$$\text{JDN} = D + \left\lfloor\frac{153m+2}{5}\right\rfloor + 365y + \left\lfloor\frac{y}{4}\right\rfloor - \left\lfloor\frac{y}{100}\right\rfloor + \left\lfloor\frac{y}{400}\right\rfloor - 32045$$

儒略历版本为:

$$\text{JDN} = D + \left\lfloor\frac{153m+2}{5}\right\rfloor + 365y + \left\lfloor\frac{y}{4}\right\rfloor - 32083$$

第二步,再把该 JDN 换算到另一种历法。所有除法都采用数学上的向下取整(floor)除法;公元前年份则使用天文纪年法:公元前 B 年对应天文年 1 - B(公元前 1 年 = 0,公元前 45 年 = -44),因此经过 0 年的往返换算依然精确无误。

平面数轴展示1582年10月儒略历与公历日期之间的10天跳跃
1582年10月,格里历改革跳过了10天,体现了两种历法之间的偏差。

实例演算

以公历公元 1582 年 6 月 15 日为例。取天文年 \(Y_{astro} = 1582\),按"公历转 JDN"公式得到 \(\text{JDN} = 2299039\)。再把该 JDN 换算回儒略历,结果为 1582 年 6 月 5 日。也就是说,公历 1582 年 6 月 15 日等同于儒略历 1582 年 6 月 5 日——当时公历比儒略历整整领先 10 天,这与 1582 年 10 月的历法改革相吻合(日差 \(\text{dayDifference} = +10\))。

常见问题

有没有"0 年"?没有。在纪年体系中,公元前 1 年之后紧接着就是公元 1 年。但在程序内部我们采用天文纪年法,将 0 年记为公元前 1 年,这样运算才能保持连续。

为什么叫"预推(proleptic)"?这类换算会把每种历法的规则套用到所有日期上,哪怕是在该历法历史上尚未存在的年代也照样适用。它并不反映各国在不同时间先后采用公历改革这一历史事实。

这个日差随时间如何变化?大致来说:公元 200 年前后约为 0 天,1582 年为 +10 天,1900—2099 年为 +13 天,2100 年起则为 +14 天。

最后更新: