如果我只指定一个日期,Javascript new Date使用的默认时间是多少?

如果我只指定一个日期,Javascript new Date使用的默认时间是多少?,javascript,date,datetime,Javascript,Date,Datetime,新日期((新日期('1900-01-01')).getTime()) -->1899年12月31日星期日23:23:15 GMT-0036(西欧标准时间) 但我希望上述情况与此相同: 新日期((新日期('1900-01-01T00:00')).getTime()) -->周一1900年1月1日00:00:00 GMT-0036(西欧标准时间) 对于~1912-01-01之后的所有日期,该值均为: 新日期((新日期('1912-01-01')).getTime()) -->1912年1月1日星期一

新日期((新日期('1900-01-01')).getTime())

-->1899年12月31日星期日23:23:15 GMT-0036(西欧标准时间)

但我希望上述情况与此相同:
新日期((新日期('1900-01-01T00:00')).getTime())

-->周一1900年1月1日00:00:00 GMT-0036(西欧标准时间)

对于~1912-01-01之后的所有日期,该值均为:
新日期((新日期('1912-01-01')).getTime())

-->1912年1月1日星期一00:00:00 GMT+0000(西欧标准时间)

更奇怪的是:
新日期((新日期('1911-11-3')).getTime())

-->1911年11月3日星期五00:00:00 GMT-0036(西欧标准时间) 但是
新日期((新日期('1911-11-03')).getTime())

-->1911年11月2日星期四23:23:15 GMT-0036(西欧标准时间)

我知道Moment.js的存在有很好的理由,但为什么在日期中有零前导和没有零前导的时间会有差异呢

(new Date('1911-11-03')).getTime()
-1835481600000
(new Date('1911-11-3')).getTime()
-1835479395000

根据规范,
1911-11-3
不是有效的日期时间字符串。因此,解析它取决于实现。
新日期((新日期('1900-01-01'))。getTime())
生成与
新日期('1900-01-01')
相同的结果。根据ECMA-262,“1900-01-01”被解析为UTC(将错误决策归咎于TC39)。“1900-01-01T00:00”(无偏移量)被解析为本地(Safari除外,Safari是buggy)。请注意,历史时区偏移是应用的,在大约1900年之前,大多数甚至不是小时或半小时偏移。“1911-11-3”不是受支持的格式,因此解析依赖于实现,许多解析将生成无效日期。