Calculate last day of month in JavaScript

2019-01-01 12:42发布

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?

15条回答
像晚风撩人
2楼-- · 2019-01-01 13:24
function getLastDay(y, m) {
   return 30 + (m <= 7 ? ((m % 2) ? 1 : 0) : (!(m % 2) ? 1 : 0)) - (m == 2) - (m == 2 && y % 4 != 0 || !(y % 100 == 0 && y % 400 == 0)); 
}
查看更多
步步皆殇っ
3楼-- · 2019-01-01 13:24

I know it's just a matter of semantics, but I ended up using it in this form.

var lastDay = new Date(new Date(2008, 11+1,1) - 1).getDate();
console.log(lastDay);

Since functions are resolved from the inside argument, outward, it works the same.

You can then just replace the year, and month / year with the required details, whether it be from the current date. Or a particular month / year.

查看更多
回忆,回不去的记忆
4楼-- · 2019-01-01 13:25

try this one.

lastDateofTheMonth = new Date(year, month, 0)

example:

new Date(2012, 8, 0)

output:

Date {Fri Aug 31 2012 00:00:00 GMT+0900 (Tokyo Standard Time)}
查看更多
登录 后发表回答