公历按 UTC 日序相减,不受时区和夏令时影响,所以「相差多少天」不会因为跨时区半夜多出或少掉一天。相差天数是不含开始日、含结束日的口径:11 月 1 日到 11 月 2 日算 1 天,同一天算 0 天;含首尾的天数会另给一格,同一天就是 1 天。
先找「从开始日期往后加满几个月还不超过结束日期」的最大整月数,余下的天数就是零头。按月加减时遇到月末会自动收拢:1 月 31 日加一个月是 2 月 28 日(闰年 29 日),3 月 31 日往前一个月是 2 月的最后一天。这样拆分和日历上数「满几年几个月零几天」一致。日期推算也是这个顺序:先加年月,再加周和天。
不算,工作日只按星期判断,周一至周五算工作日,周六周日算周末,不识别法定节假日和调休。所以春节、国庆那一周这里仍按普通星期算,做排期时要把假期另外扣掉。工作日和周末都是含首尾的口径。
按满周年计算,平年没有 2 月 29 日,就把 2 月 28 日当作生日那天,于是 2 月 28 日当天满周岁,下次生日也落在 2 月 28 日。如果习惯按 3 月 1 日过生日,用这里的周岁结果要自己往后挪一天。
可选范围是 1900 年 1 月 1 日到 2100 年 12 月 31 日,推算结果超出这个范围时会提示,不给出不可靠的日期。所有计算在浏览器本地完成,输入的日期不会发到服务器。