为什么Javascript的Date()函数会破坏我在Safari中的生日?

时间:2015-08-13 13:12:33

标签: javascript safari

在Safari中运行的Javascript我的生日有问题。这有时会破坏表单中的验证(因为表单会检查javascript输出的输入,并且日期不再匹配)。我很想知道为什么会这样。

我的生日是1985年10月6日。在Javascript中,我使用以下方式创建:

new Date(1985, 09, 06)

(请注意,月份为零索引,但天数和年份不是。)

// My birthday
console.log("1985, 09, 06: " + new Date(1985, 09, 06))

// One day earlier/later
console.log("1985, 09, 07: " + new Date(1985, 09, 07))
console.log("1985, 09, 05: " + new Date(1985, 09, 05))

// One month earlier/later
console.log("1985, 10, 06: " + new Date(1985, 10, 06))
console.log("1985, 08, 06: " + new Date(1985, 08, 06))

// One year earlier/later
console.log("1986, 09, 06: " + new Date(1986, 09, 06))
console.log("1984, 09, 06: " + new Date(1984, 09, 06))

在Safari中运行此结果的结果是:

// My birthday (note the day is wrong, and the time is 11pm)
Sat Oct 05 1985 23:00:00 GMT+1000 (AEST)

// One day earlier/later
Mon Oct 07 1985 00:00:00 GMT+1100 (AEDT)
Sat Oct 05 1985 00:00:00 GMT+1000 (AEST)

// One month earlier/later
Wed Nov 06 1985 00:00:00 GMT+1100 (AEDT)
Fri Sep 06 1985 00:00:00 GMT+1000 (AEST)

// One year earlier/later
Mon Oct 06 1986 00:00:00 GMT+1100 (AEDT)
Sat Oct 06 1984 00:00:00 GMT+1000 (AEST)

https://jsfiddle.net/27bupLr9/

在Chrome中,我的生日是正确创建的:

console.log(new Date(1985, 09, 06))
Sun Oct 06 1985 00:00:00 GMT+1000 (AEST)

1 个答案:

答案 0 :(得分:0)

这已在macOS High Sierra中得到解决。