使用方法
- 「数值」默认 1000,范围 0 到 100000,支持小数;「方向」默认天到年。改动任意一项、或光标停在数值框里按回车,都会立刻重算。
- 「方向」下拉只有两项:d2y 表示天到年,y2d 表示年到天。点「交换方向」把两头对调,用来反着核一遍。
- 「小数位」默认 6,范围 0 到 6。天折年的系数是 0.002737907007,位数少了会直接舍成 0,默认给足六位;只要整数张的时候填 0 更清爽。
- 「批量换算」默认已经写好五行,每行一条「数值 空格 方向键」,例如 365 d2y。按 Ctrl+Enter(Mac 上 Cmd+Enter)一次算完;框被清空时点「换算」会自动填回示例。
- 结果区第一行是主结果;往下三行是固定口径:1 公历年 = 365.2425 天、1 天 = 0.002737907007 年、365 天 = 0.999336057551 年,与小数位无关;最后是批量五行的逐条结果。
- 清单下面是十二行时间单位对照表,从 1 天到 400 公历年逐行折成公历年与儒略年,默认显示 6 行,点「加载更多」展开全部,点「导出 CSV」存成带字节序标记的文件。
- 「复制结果」复制整段清单;「复制对照表」复制正文那张时间单位对照表,制表符分隔,可以直接粘进表格软件。
- 数值为空、写成负数、超过 100000,小数位留空或不是 0 到 6 的整数,批量行缺空格、数值不是数字、方向键不在 d2y 与 y2d 之内,都会给出指明行号和原因的具体提示。
这个天转年换算器能解决什么问题
天是确定的时间长度,年却有好几种口径。这一页做的是把天数折算成公历平均年,默认方向就是天到年,选 y2d 可以反过来算。锚点是天:1 公历年登记 365.2425 天,除法与乘法各走一条路,互为逆运算。
第一类是最反直觉的那一条:365 天平年算出来是 0.999336057551 年,不是整整 1 年。因为平均年比平年多出 0.2425 天,把 365 天除以 365.2425 必然差一点点。租期、保修期、工龄这类「满一年」的说法,按 365 天估算会系统性偏小 0.066%,攒到几十年就是好几天。
第二类是工程工期与项目排期。1000 天折 2.737907 年,1826 天折 4.999418 年——差 6 天就到 5 年。反过来排期时,说「五年」到底是 1826 天还是日历上的 1826 天或 1827 天(取决于中间夹了几个 2 月 29 日),用平均年先估再用日历核对,是最省事的两步法。
第三类是日息与年化的折算。金融机构按 365 天一年做日息,也有按 360 天一年的;本页给的是公历平均年 365.2425 天这一支,用它把年化利率摊到每一天,比按 365 更贴近真实的日历长度。
还有一类边界必须说清:平均年只对「长时间跨度」成立。要算某个具体区间有多少天,必须一年一年数闰年——1900 年不是闰年,2000 年却是,因为百年不闰、四百年再闰。本页给的是平均口径,不做具体日期的区间天数计算。
计算原理与变量说明
整页只锚定一个系数:365.2425。天到年是除以它,年到天是乘上它。两个方向共用同一条式子,互为逆运算,不需要为每个方向各写一套公式。
365.2425 是数出来的,不是近似拟合。公历闰年规则是四年一闰、百年不闰、四百年再闰。取 400 年这个最小周期:400 ÷ 4 = 100 个闰年候选,减去 4 个整百年里不算闰年的 3 个(100、200、300),加上 400 本身这一个,共 97 个闰年。400 × 365 + 97 = 146097 天,除以 400 得 365.2425 天,这是一个精确的有限小数。
「一年」至少有三种口径。日历上写在墙上的那一年是 365 天或 366 天;公历平均年是 365.2425 天;天文学里的儒略年是 365.25 天,用作光年等距离单位的时间基准。回归年(太阳两次过春分点)约 365.2422 天,而且还在缓慢变化,所以它和 365.2425 对不齐,这正是要靠闰年规则不断修正的原因。
| 单位 | 天 | 折公历年 | 折儒略年 |
|---|---|---|---|
| 1 天 | 1 | 0.002737907 | 0.002737851 |
| 1 周 | 7 | 0.019165349 | 0.019164956 |
| 1 平均月 | 30.436875 | 0.083333333 | 0.083331622 |
| 1 平年 | 365 | 0.999336058 | 0.999315537 |
| 1 闰年 | 366 | 1.002073965 | 1.002053388 |
| 1 公历年 | 365.2425 | 1 | 0.999979466 |
| 1 儒略年 | 365.25 | 1.000020534 | 1 |
| 1 回归年 | 365.2422 | 0.999999179 | 0.999978645 |
| 1 恒星年 | 365.256363 | 1.000037956 | 1.000017421 |
| 1 年代 | 3652.425 | 10 | 9.999794661 |
| 1 世纪 | 36524.25 | 100 | 99.997946612 |
| 400 公历年 | 146097 | 400 | 399.991786448 |
反向是乘法,但口径要跟着换。1 年 = 365.2425 天是平均值,把它摊到具体某一年就未必成立:2024 年是 366 天,2025 年是 365 天。所以「1 年有多少天」这个问题在平均口径下是 365.2425,在日历口径下必须先看是哪一年。
舍入只发生在显示层。内部用双精度浮点,365.2425 能被精确表示,除法结果保留约 16 位有效数字;显示时按「小数位」四舍五入后去掉末尾多余的零,所以 2.737907006989 在小数位 6 时显示成 2.737907。
完整示例(数值仅作演示)
默认值是数值 1000、方向天到年、小数位 6。手算复算:1000 ÷ 365.2425 = 2.737907,页面主结果就是「1000 天 = 2.737907 年」。
1000 天 ÷ 365.2425 = 2.737907006989 年 365 天 ÷ 365.2425 = 0.999336057551 年 反向:1 年 × 365.2425 = 365.2425 天
批量框五行:365 d2y 得 0.999336 年,正好演示平年不满一整年;366 d2y 得 1.002074 年,闰年反而多出一点;100 d2y 得 0.273791 年;1 y2d 走反方向,得 365.2425 天。每一行都按自己行首的方向键独立计算,与顶部下拉无关。
反向核对:点「交换方向」后数值仍是 1000,方向变成年到天,1000 年折 365242.5 天,这正是 146097 天乘 2.5 的结果(400 年 146097 天,1000 年是它的 2.5 倍)。边界值有两个:0 天 = 0 年;上限 100000 天 = 273.790701 年,反向 100000 年 = 36524250 天。
天转年对照表
下表把常见时间跨度按天从小到大排列,第三列是折成的公历年,第四列是折成的儒略年。天一列是锚点,后两列分别由天除以 365.2425 与 365.25 得来。
| 单位 | 天 | 折公历年 | 折儒略年 |
|---|---|---|---|
| 1 天 | 1 | 0.002737907 | 0.002737851 |
| 1 周 | 7 | 0.019165349 | 0.019164956 |
| 1 平均月 | 30.436875 | 0.083333333 | 0.083331622 |
| 1 平年 | 365 | 0.999336058 | 0.999315537 |
| 1 闰年 | 366 | 1.002073965 | 1.002053388 |
| 1 公历年 | 365.2425 | 1 | 0.999979466 |
| 1 儒略年 | 365.25 | 1.000020534 | 1 |
| 1 回归年 | 365.2422 | 0.999999179 | 0.999978645 |
| 1 恒星年 | 365.256363 | 1.000037956 | 1.000017421 |
| 1 年代 | 3652.425 | 10 | 9.999794661 |
| 1 世纪 | 36524.25 | 100 | 99.997946612 |
| 400 公历年 | 146097 | 400 | 399.991786448 |
读这张表抓两条线:一条是 365 与 366 两行,它们分居 1 的两侧,谁都不是整整 1 年;另一条是儒略年那一行,它比公历年多 0.0075 天,四百年下来就攒出 3 天的差,这正是 1582 年改历的直接原因。
结果边界、舍入与适用说明
- 数值为空时提示「数值不能为空,请填 0 到 100000 之间的数字,例如 1000 表示 1000 天」,不会沿用上一次的结果。
- 数值写成负数时提示天与年都是时间长度、请填 0 或正数;批量行里的负号同样会被拦下并指出行号。
- 数值超过 100000 时提示拆成更小的分量分别换算,不自动截断到边界值。
- 小数位留空、写成 2.5 这样的小数、或超出 0 到 6,分别给出三条不同提示,不自动取整也不套默认值。
- 批量行每行只认「数值 空格 方向键」两段,写成 1000d2y、一行两个数、或方向键拼成 d2x,都会指出是第几行并说明原因。
- 365.2425 在双精度下能被精确表示,结果的小数位数只由「小数位」决定;天到年这一列在小数位 0 时会全部显示成 0,因为系数只有 0.0027。
- 本页用公历平均年口径,不计算两个具体日期之间的天数,也不处理儒略历、农历与闰秒;要算具体区间请改用日期计算工具。
- 页面不联网、不写本地存储,数值与批量内容只用于本次计算。
常见问题
为什么 365 天算出来不是 1 年?
因为公历平均一年是 365.2425 天,比平年多 0.2425 天。365 ÷ 365.2425 = 0.999336057551,差的那 0.000664 年就是 0.2425 天。闰年 366 天反过来是 1.002073965 年,同样不是整整 1 年。
365.2425 天是怎么来的?
400 年里按四年一闰有 100 个候选,扣掉 100、200、300 这 3 个整百年,再加回 400 本身,共 97 个闰年。400 × 365 + 97 = 146097 天,146097 ÷ 400 = 365.2425 天。
公历年和儒略年差多少?
儒略年固定 365.25 天,比公历平均年多 0.0075 天。看着微不足道,约 133 年就攒出 1 天,四百年攒 3 天,这正是 1582 年推行格里高利历要一次性删掉 10 天的原因。
回归年 365.2422 天和 365.2425 天对不上怎么办?
对不上才需要闰年规则。回归年是太阳两次过春分点的间隔,约 365.2422 天而且缓慢变化;365.2425 是历法取的平均近似,两者每年差约 0.0003 天,要靠「百年不闰、四百年再闰」这种例外规则长期吸收。
我能用这一页算两个日期之间有多少天吗?
不能。本页做的是天与平均年之间的单位换算,输入的是天数而不是日期。要算 2024-01-01 到 2025-01-01 有多少天,得用日期间隔计算工具,因为具体区间必须逐个闰年数过去。
批量里的 d2y 和 y2d 是什么意思?
d2y 是 day to year 的缩写,表示这一行按天算成年;y2d 是 year to day,表示按年算成天。每行可以写不同的方向键,大小写不敏感,D2Y 与 d2y 等价。
为什么小数位调到 0 就全变成 0 了?
因为 1 天只有 0.002737907007 年,四舍五入到整数必然是 0。要看非零结果,要么把小数位调到 3 以上,要么把数值放大到几百天以上再算。
输入的数据会上传到服务器吗?
不会。数值、方向与批量内容只在本页的 JavaScript 里做乘除,没有发起任何网络请求,刷新页面后输入即恢复默认值。