1. ホーム
  2. javascript

[解決済み] 月の最終日を計算する

2022-03-15 08:46:14

質問

を提供する場合 0dayValueDate.setFullYear を選択すると、前月の最終日が表示されます。

d = new Date(); d.setFullYear(2008, 11, 0); //  Sun Nov 30 2008

でこの動作について言及されています。 モジラ . これは信頼できるクロスブラウザの機能なのでしょうか、それとも別の方法を検討すべきでしょうか?

解決方法は?

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を前月の最終日として使っているからといって、今後もそうであるとは限りませんし、リストにないブラウザがそうであるとも限りませんが、どのブラウザでも同じように動くはずだという信念に信憑性を持たせています。