计算月份的最后一天

2022-08-29 23:37:34

如果您提供 in,您将获得上个月的最后一天:0dayValueDate.setFullYear

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

mozilla上有这种行为的参考。这是一个可靠的跨浏览器功能,还是我应该考虑其他方法?


答案 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作为上个月的最后一天并不意味着它们将继续这样做,或者未列出的浏览器会这样做,但它为它应该在每个浏览器中以相同的方式工作提供了可信度。


答案 2

我发现这对我来说是最好的解决方案。让 Date 对象为您计算它。

var today = new Date();
var lastDayOfMonth = new Date(today.getFullYear(), today.getMonth()+1, 0);

将 day 参数设置为 0 表示比该月的第一天少一天,即上个月的最后一天。