获取当前月(季度/年)的最后一天(set相关操作(2)

但是,假如现在是第1季度,36行设置日期到3月31日;假如满足38行代码逻辑的话,39-40行设置月份到6月31日,阿西吧,6月没有31日,那么这时候得到的date,就会是~~~~没错,7月1日,自挖坑啊。

所以,改代码

function getMaxDate(type) { var date = new Date(SERVER_TIME * 1000); var m = date.getMonth(); var y = date.getFullYear(); var d = date.getDay(); var today = date.getDate(); console.log(['SERVERTIME: ', y, '-', m + 1, '-', today, ' 星期', d].join('')); switch (type) { case 'm': case 'month': date.setMonth(m + 1); date.setDate(0); break; case 'y': case 'year': if (m == 11 && today >= 15) { date.setFullYear(y + 2); } else { date.setFullYear(y + 1); } date.setMonth(0); date.setDate(0); break; case 'q': case 'quarter': var qLastMonth = (Math.floor(m / 3) + 1) * 3; if (m === date.getMonth() && today >= 15) { date.setMonth(qLastMonth + 3); } else { date.setMonth(qLastMonth); } date.setDate(0); // 得到当前季度最后一天的date break; default: date = null; } return date; }

这里得到一个注意项,月份的相关判断,一定要在日的设置之前做好,不要再日期设置后在操作月份;或者你把日期设置到1-28之间任意数字,也就是保证不会跑到下一个月去。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wwjfdj.html