0
を として指定するとdayValue
、Date.setFullYear
前月の最終日が取得されます。
d = new Date(); d.setFullYear(2008, 11, 0); // Sun Nov 30 2008
この行動については、モジラこれは信頼できるクロスブラウザ機能ですか、それとも別の方法を検討する必要がありますか?
ベストアンサー1
var month = 0; // January
var d = new Date(2008, month + 1, 0);
console.log(d.toString()); // 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()
出力の違いは、日付が異なるためではなく、実装の違いによるものです。
もちろん、上で特定したブラウザが前月の最終日として 0 を使用しているからといって、今後もそうし続けるということや、リストされていないブラウザもそうするということではありませんが、すべてのブラウザで同じように動作するはずだという考えに信憑性を与えます。