我正在遵循本指南Get the First Weekday of the Month with moment.js
并且可以正常工作以获得第一个月(1月)的第一个工作日
但是,当我试图使用相反的情况时。我将收到12月份的最后一个工作日。我尝试更改减号和子号但不工作的添加答案 0 :(得分:2)
var dateFrom = moment().subtract(1, 'months').endOf('month').format("dddd")
alert(dateFrom);
一年使用
var year = moment().subtract(1, 'months').endOf('month').get('year');
alert(year);
使用格式“dddd”。
因此,对于商业工作日,请使用“时刻 - 业务”library。
工作fiddle
答案 1 :(得分:2)
您可以使用moment-business-days进行与工作日相关的处理。如果你做更多这样的处理而不仅仅是这个问题会更容易。
var moment = require('moment-business-days');
// Set the date for december. You can use this for any month.
// Get array of business days for the month
var businessDays=moment('01-12-2017', 'DD-MM-YYYY').monthBusinessDays();
// Get last business day from the array
var lastBusinessDay = businessDays[businessDays.length-1]._d;
console.log(lastBusinessDay);
答案 2 :(得分:2)
/*
get last day of the year and add days:
0 : if not sunday/saturday
-2 : if sunday
-1 : if saturday
*/
var eom = moment().utc().endOf('year');
eom.add((eom.day() % 6 !== 0) ? 0 : (eom.day() === 0) ? -2 : -1, 'day');
/* Testing for every last week day of the month .. */
var eom = null; /* store end-of-month */
var log = '';
var i = 0;
/* loop for all 12 months from jan - dec */
while (i < 12) {
eom = moment().utc().month(i).endOf('month');
log = eom.format('LLLL') + ' ~~~ ';
eom.add((eom.day() % 6 !== 0) ? 0 : (eom.day() === 0) ? -2 : -1, 'day');
log += eom.format('LLLL');
console.log(log);
i++;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.17.1/moment.min.js"></script>