2017-01-09 51 views

回答

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

+0

你是否有jsfiddle,所以我可以测试:) – wiwit

+0

我在nodejs中使用它,我不知道如何在小提琴上添加时刻 - 商务日 –

+0

@wiwit我已经添加了链接 –

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

+0

我认为'周日',OP的意思是'周一至周五只有 – xbonez

+0

是啊我得到了星期六,当我编辑它是2016的格式,这将是伟大的,如果我们得到最新的一年:) – wiwit

+0

编辑我的答案年以及更新的小提琴以及 – user3775217

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) { 
 
\t eom = moment().utc().month(i).endOf('month'); 
 
\t log = eom.format('LLLL') + ' ~~~ '; 
 

 
\t eom.add((eom.day() % 6 !== 0) ? 0 : (eom.day() === 0) ? -2 : -1, 'day'); 
 
\t log += eom.format('LLLL'); 
 

 
\t console.log(log); 
 
\t i++; 
 
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.17.1/moment.min.js"></script>

相关问题