这个计算器有什么用
本工具以一个起始日期和时间为基准,按天、时、分、秒为单位向后加上(或向前减去)一段时长,随后给出结果对应的公历日期、时钟时间和星期几。计算采用外推格里高利历(proleptic Gregorian calendar),并将每分钟严格按 60 秒处理(不考虑闰秒)。整套算法是通用的;可选的"年号"下拉框只是方便你用日本年号(明治、大正、昭和、平成、令和)来填写年份,系统会先把它换算成公历(公元)年份再进行计算。
使用方法
先选择年号(普通年份保持"公元(西历)"即可),然后填写起始的年、月、日、时、分、秒。接着选择方向:"向后(+)"表示时间向前推移,"向前(-)"表示时间往回推。再输入要加减的天、时、分、秒,用不到的字段保留为 0 即可。提交后即可看到结果时间戳和对应的星期几。
计算原理
系统先把起始日期换算为儒略日数(Julian Day Number,简称 JDN),这是一种连续的天数计数。再把该天数与当天的时间合并成总秒数。然后加上带正负号的经过秒数,最后用向下取整除法把总数重新拆分成天数和当天时间——这样即使是负向偏移(跨越午夜、月份或年份边界的减法)也能得到有效的日期。接着再把 JDN 换算回公历的年、月、日,星期几则直接由 JDN 推算得出。
$$\begin{gathered} T_{\text{result}} = T_{\text{start}} + \text{Dir} \cdot \Delta \\[1.5em] \text{where}\quad \left\{ \begin{aligned} Y &= \text{Era} + \text{Year} \\ T_{\text{start}} &= \text{JDN}(Y,\,\text{Mon},\,\text{Day}) \cdot 86400 \\ &\quad + 3600\,\text{Hr} + 60\,\text{Min} + \text{Sec} \\ \Delta &= 86400\,\text{Days} + 3600\,\text{Hrs} \\ &\quad + 60\,\text{Mins} + \text{Secs} \end{aligned} \right. \end{gathered}$$
实例演示
起始时间为 2024-06-15 00:00:00,方向为"向后",经过时长为 0 天 11 小时 40 分钟 30 秒。2024-06-15 对应的 JDN 为 \(2{,}460{,}477\)。加上 \(42{,}030\) 秒后仍是同一天,时间变为 11:40:30。最终结果是 2024-06-15 11:40:30,当天是星期六。
$$11 \cdot 3600 + 40 \cdot 60 + 30 = 42{,}030 \ \text{s}$$
常见问题
能正确处理闰年吗? 可以。儒略日数的换算会自动套用完整的格里高利历闰年规则。
可以做减法(往回算)吗? 可以。选择"向前(-)",系统就会减去整段时长,并正确地跨天、跨月、跨年往回回退。
那时区和夏令时呢? 本计算是一个纯粹的日历时刻,不做任何时区或夏令时调整,因此结果是确定且可复现的。