先说一个常见的坑:「1 月 31 日往后推一个月」是几月几号?不同程序给出的答案可能不一样——有的算 2 月 28 日,有的算 3 月 3 日,还有的直接报错。
原因在于月份的「长度」不固定。为了避免这种问题,很多系统内部其实不用「年月日」来存时间,而是统一转成一个数字——从 1970 年 1 月 1 日零点开始,过了多少秒(或者毫秒)。
所以在算两个日期相差多少天的时候,最稳妥的方式是:先把两个日期都转成这个统一的数字,相减,再换算成天数。这样不管中间跨了几个月、有没有闰年,结果都是准的。
还有一个容易被忽略的点:闰年。公历里能被 4 整除的年份通常是闰年,但能被 100 整除又不是 400 的年份除外——比如 1900 年不是闰年,2000 年是。规则听起来绕,但计算机处理得很好,你只要不去手算就行。
日常用的话,直接在浏览器里选两个日期、算个差值,就足够解决大部分问题了。