如果您提供0的dayValue在Date.setFullYear你上一个月的最后一天:
0
dayValue
Date.setFullYear
d = new Date(); d.setFullYear(2008, 11, 0); // Sun Nov 30 2008
在mozilla上有对此行为的引用。这是可靠的跨浏览器功能还是我应该考虑替代方法?
var month = 0; // January var d = new Date(2008, month + 1, 0); alert(d); // last day in January
IE 6: Thu Jan 31 00:00:00 CST 2008 IE 7: Thu Jan 31 00:00:00 CST 2008 IE 8: Beta 2: Thu Jan 31 00:00:00 CST 2008 Opera 8.54: Thu, 31 Jan 2008 00:00:00 GMT-0600 Opera 9.27: Thu, 31 Jan 2008 00:00:00 GMT-0600 Opera 9.60: Thu Jan 31 2008 00:00:00 GMT-0600 Firefox 2.0.0.17: Thu Jan 31 2008 00:00:00 GMT-0600 (Canada Central Standard Time) Firefox 3.0.3: Thu Jan 31 2008 00:00:00 GMT-0600 (Canada Central Standard Time) Google Chrome 0.2.149.30: Thu Jan 31 2008 00:00:00 GMT-0600 (Canada Central Standard Time) Safari for Windows 3.1.2: Thu Jan 31 2008 00:00:00 GMT-0600 (Canada Central Standard Time)
输出差异是由于实现方式的差异toString(),而不是日期不同。
toString()
当然,仅因为上面标识的浏览器将0用作上个月的最后一天,并不意味着它们会继续这样做,或者未列出的浏览器仍会这样做,但这使人们相信它应该可以正常工作。在每个浏览器中都一样。