2 回答

TA貢獻1831條經驗 獲得超9個贊
從該月的最后一天計算天數。如果 friday(dayno =5) 超出 5,則減去 5,否則加 2。如果天數為 0 或 6,則最后從該月的最后一天減去天數,否則返回該月的最后一天。
var calc = function(monthYear) {
var lastDay = moment(monthYear, "MM-YYYY").endOf("month");
var lastDayNumber = lastDay.day();
var daystoSubtract;
daystoSubtract =
lastDay.day() >= 5 ?
(daystoSubtract = lastDayNumber - 5) :
(daystoSubtract = lastDayNumber + 2);
if (lastDay.day() === 0 || lastDay.day() === 6) {
return lastDay.subtract(daystoSubtract, "days");
} else {
return lastDay;
}
};
console.log(calc("05-2020").format("DD-MM-YYYY"));
console.log(calc("06-2020").format("DD-MM-YYYY"));
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/moment.min.js"></script>

TA貢獻1816條經驗 獲得超4個贊
我的香草 javascript 版本。
function getVen(_month, _year) {
// Add 1 month for count down on current "_month"
_year = _month == 12 ? _year + 1 : _year;
_month = _month == 12 ? 1 : _month + 1;
// Set Date
var d = new Date(_month + '/01/' + _year);
// Remove 1 day
d.setDate(d.getDate()-1); // Last day of "_month/_year"
// If last day not Saturday nor Sunday
if (d.getDay() != 6 && d.getDay() != 0) return d;
// Count down looking for day "5"=Friday
for (var i=7; i>0; i--) {
if (d.getDay() == 5) return d;
d.setDate(d.getDate()-1);
}
return ''; // Not found ?
}
document.getElementById('test').innerHTML = getVen(05,2020) + '<br/>';
document.getElementById('test').innerHTML += getVen(06,2020);
<div id="test"></div>
添加回答
舉報