如何获得上个月的最后一个工作日(十二月)

时间:2017-01-09 06:15:10

标签: javascript momentjs

我正在遵循本指南Get the First Weekday of the Month with moment.js

并且可以正常工作以获得第一个月(1月)的第一个工作日

但是,当我试图使用相反的情况时。我将收到12月份的最后一个工作日。我尝试更改减号和子号但不工作的添加

3 个答案:

答案 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);

您可以看到输出here或克隆并编辑它。 这是fiddle

答案 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>