Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Calculate last day of month

If you provide 0 as the dayValue in Date.setFullYear you get the last day of the previous month:

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

There is reference to this behaviour at mozilla. Is this a reliable cross-browser feature or should I look at alternative methods?

like image 319
Ken Avatar asked Oct 21 '08 15:10

Ken


1 Answers

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) 

Output differences are due to differences in the toString() implementation, not because the dates are different.

Of course, just because the browsers identified above use 0 as the last day of the previous month does not mean they will continue to do so, or that browsers not listed will do so, but it lends credibility to the belief that it should work the same way in every browser.

like image 151
Grant Wagner Avatar answered Oct 04 '22 08:10

Grant Wagner