Javascript Date()函数,异常
Javascript Date() function, abnormalities
我最近遇到 javascript 中日期不可靠的问题。
这是您可以在自己的浏览器控制台中测试以重现问题的示例。
s = new Date(0); s.setYear(2015); s
//Thu Dec 31 2015 18:00:00 GMT-0600 (Central Standard Time)
s.setMonth(5); s
//Wed Jul 01 2015 18:00:00 GMT-0500 (Central Daylight Time)
s.setMonth(6); s
//Wed Jul 01 2015 18:00:00 GMT-0500 (Central Daylight Time)
如您所见,设置月份 5(六月)与 6(七月)相同,均为 return 七月。
这通过使用 --new Date() 而不是 new Date(0) 来解决。
我只是想了解为什么会这样。
重申,想了解为什么。
谁能描述这种行为?
https://wordpress.org/support/topic/front-end-submit-events-off-by-1month?replies=5#post-7059058
这里讨论了问题的原因:javascript new Date(0) class shows 16 hours?
因此,在您的情况下,不要在 Date() 中传递 0;
var s = new Date(); s.setYear(2015);
document.write(s);
document.write("<br/>");
s.setMonth(5);
document.write(s);
document.write("<br/>");
s.setMonth(6);
document.write(s)
- 日期最初是 2015 年 12 月 31 日。
s.setMonth(5)
将月份设置为 6 月(月份为零索引),因此您将日期设置为 2015 年 6 月 31 日.
- 没有这样的日期(即 6 月有 30 天),因此它滚动到 2015 年 7 月 1 日。
- 使用
s.setMonth(6)
将月份设置为 7 月没有任何作用,因为日期已经是 7 月了。
new Date()
使用当前日期(今天不是 31 号),因此不会发生这种 31 比 1 的翻转。
我最近遇到 javascript 中日期不可靠的问题。
这是您可以在自己的浏览器控制台中测试以重现问题的示例。
s = new Date(0); s.setYear(2015); s
//Thu Dec 31 2015 18:00:00 GMT-0600 (Central Standard Time)
s.setMonth(5); s
//Wed Jul 01 2015 18:00:00 GMT-0500 (Central Daylight Time)
s.setMonth(6); s
//Wed Jul 01 2015 18:00:00 GMT-0500 (Central Daylight Time)
如您所见,设置月份 5(六月)与 6(七月)相同,均为 return 七月。 这通过使用 --new Date() 而不是 new Date(0) 来解决。
我只是想了解为什么会这样。 重申,想了解为什么。 谁能描述这种行为?
https://wordpress.org/support/topic/front-end-submit-events-off-by-1month?replies=5#post-7059058
这里讨论了问题的原因:javascript new Date(0) class shows 16 hours?
因此,在您的情况下,不要在 Date() 中传递 0;
var s = new Date(); s.setYear(2015);
document.write(s);
document.write("<br/>");
s.setMonth(5);
document.write(s);
document.write("<br/>");
s.setMonth(6);
document.write(s)
- 日期最初是 2015 年 12 月 31 日。
s.setMonth(5)
将月份设置为 6 月(月份为零索引),因此您将日期设置为 2015 年 6 月 31 日.- 没有这样的日期(即 6 月有 30 天),因此它滚动到 2015 年 7 月 1 日。
- 使用
s.setMonth(6)
将月份设置为 7 月没有任何作用,因为日期已经是 7 月了。
new Date()
使用当前日期(今天不是 31 号),因此不会发生这种 31 比 1 的翻转。