这个计算器有什么用
日期加减天数计算器能精确算出某个起始日期之前或之后第 N 天对应的公历日期。无论你想知道「从今天起 90 天后是几号」,还是「45 天前是哪一天」,这个工具都能直接给出答案,并附带星期几。它适用于任意公历日期,会自动处理每月天数不同、闰年以及跨年等情况。
使用方法
输入起始日期(年、月、日),选择要增加还是减少天数,再填入具体的天数即可。计算器会以 YYYY-MM-DD 格式返回结果日期,并显示对应的星期几。它是一款通用的日期工具——除了采用国际通行的公历之外,不针对任何特定国家或历法做假设,全球通用。
计算原理详解
与其直接去处理每月天数不一、闰年规则复杂这些麻烦,这个工具会先把起始日期换算成儒略日数(Julian Day Number,简称 JDN)——也就是把日期表示成一个连续递增的天数序号。这样一来,加减 \(N\) 天就只是简单的整数运算:$$\text{JDN}_{out} = \text{JDN}(\text{起始}) \pm N$$算出结果后,再把它还原成年、月、日。其中儒略日数由下式计算:$$\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} \bmod 7\) 得出。这种方法结果精确,能避免逐天累加循环常见的误差问题。
实例演示
以 2024-01-01 为起始日期,增加 30 天。2024-01-01 对应的儒略日数是 2,460,311,加上 30 得到 $$2{,}460{,}311 + 30 = 2{,}460{,}341$$换算回日期即为 2024-01-31。由于 2024 年是闰年,计算过程会自然地把一月份的 31 天考虑在内。如果再多加一天(共 31 天),日期就会跨到 2024-02-01。
关键术语解释
- 儒略日数 (JDN)
- 从公元前4713年1月1日中午协调世界时起的连续整天计数(儒略历推算日期)。因为每个日历日期都映射到一个整数,加减天数变成简单的整数算术:将日期转换为其JDN,加或减去偏移量,然后转换回去。这避免了手动处理月份长度和闰年的问题。
- 格里高利历
- 当今世界大多数地区使用的民用历法,由教宗格里高利十三世在1582年引入。它定义了一个365天的年份,在特定规则下加上闰日,平均年长为365.2425天,与太阳年紧密相关。
- 推算格里高利历
- 格里高利历在其1582年引入之前应用于日期的延伸。计算器使用它以便历史或极早期的日期遵循相同的一致闰年规则,确保任何时代的JDN算术中断不了。
- 闰年
- 包含366天(含2月29日)的年份。格里高利历年份是闰年,如果它能被4整除,除了世纪年份,这些也必须能被400整除。所以2000年和2024年是闰年,但1900年和2100年不是。
- 从模运算得出的周日
- 直接从JDN使用模运算得出的周日。因为一周的日子每7天重复一次,计算 \((\text{JDN} + 1) \bmod 7\) 得到0到6的值,映射到一周的某一天(JDN 0对应星期一)。这使得计算器无需查找表就能命名任何结果日期的周日。
常见问题
能正确处理闰年吗?可以。儒略日数算法本身就把闰年和每月天数不一的情况内置考虑进去了,因此闰年里的 2 月 29 日也能准确处理。
可以跨年吗?当然可以。只要增加的天数足够多,结果就会自动跨入下一年(做减法时则会回到上一年),整个过程无需任何额外操作。
使用的是哪种历法?采用前推格里历(proleptic Gregorian calendar),也就是当今世界通用的标准民用历法。