我有一个JavaScript日期,例如05-04-2020。
我试图弄清楚如何获取该日期的当前季度,然后获取该季度的最后一天。在这种情况下,答案应该是06-30-2020。
下面是我创建的一个函数,但是觉得这不是最好的方法:
function getLastDayOfQuarterMonth(date) {
let retVal
const quarter = moment(date).quarter()
switch(quarter) {
case 1:
retVal = new Date(moment(date).year(), 2, 31)
break;
case 2:
retVal = new Date(moment(date).year(), 5, 30)
break;
case 3:
retVal = new Date(moment(date).year(), 8, 30)
break;
case 4:
retVal = new Date(moment(date).year(), 11, 31)
break;
}
return retVal
}
答案 0 :(得分:0)
我们可以使用moments
提供的quarter
和endOf
方法。
const date = "05-04-2020";
const getLastDayOfTheQuarter = (date) => moment().quarter(moment(date, "MM-DD-YYYY").quarter()).endOf('quarter').format("MM-DD-YYYY");
console.log(getLastDayOfTheQuarter(date));
console.log(getLastDayOfTheQuarter(moment().format("MM-DD-YYYY")));
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.29.1/moment.min.js"></script>
为简单起见,我将输入和输出格式视为MM-DD-YYYY
。可以根据需要进行更新。
答案 1 :(得分:0)
您可以简单地使用endOf("quarter")
:
function getLastDayOfQuarterMonth(date) {
return moment(date, "MM-DD-YYYY").endOf('quarter').toDate();
}
console.log(getLastDayOfQuarterMonth("05-04-2020"));
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.25.0/moment.min.js"></script>
请注意,您必须立即指定格式以正确解析05-04-2020
,请参阅moment(String, String)
。您可以使用toDate()
获取Moment.js包装的本机Date对象的副本,或者使用format()
获取所需的输出。
答案 2 :(得分:0)