表格里面Date对象的构造函数有问题呀

d = new Date(1900,0,46113);

Console.log(d.toDateString());

输出的结果是"Thu Apr 02 2026"。实际46113应该是今年的4月1日。这活生生多出来一天。

浙江省
浏览 135
收藏
1
分享
1 +1
9
+1
全部评论 9
 
懒得批爆
本身不懂JS,就这两句研究了一阵 这代码的一是是从1900-01-01往后推46112天,所以得到的并不是序号为46113的日期。原因如下: Excel的日期系统自带了一个经典BUG,1900年基准 代码会将1900-01-01算作第1天,那么第46113天就是2026-04-02,完全没问题。 但你觉得这是错误的,是一个错觉,Excel有两个坑: 1、Excel把1900年当做闰年,多加了1900-02-29(这是不存在的1天) 2、很多人的习惯是 46113=2026-04-01 试试改成这样呢 const d = new Date(1900, 0, 46113 - 1); console.log(d.toDateString());
· 四川省
2
回复
wils
wils

创作者俱乐部成员

据说excel当年是从lotus抄来的这个bug,wps继承下去了。。。
· 海南省
回复
 
wils
wils

创作者俱乐部成员

浏览器里的js引擎也这样,那这就不是bug,顶多是js的特性
· 海南省
回复
懒得批爆
是因为1900-02-29的坑,可能设计这套系统的数学是体育老师教的吧,微软的屎山代码也就延续下来,到现在大家都习惯了也没人去改那个标准!
· 四川省
1
回复