2017-01-09 2 views
1

я отслеживаю это руководство Get the First Weekday of the Month with moment.jsмоментов, как получить последний день недели в прошлом месяце (декабрь)

и она отлично работает, чтобы получить первый день недели первого месяца (января)

но, когда я пытаюсь использовать обратное. Я получаю последний рабочий день месяца, который будет декабрь. я пытаюсь изменить надстройку в минус и к югу, но не работает

+0

вы можете показать свои JS? –

+0

Исходный код или вы имеете в виду jsfiddle? – wiwit

+0

да Пожалуйста, если вы можете –

ответ

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

это с форматом «дддд».

Так что для рабочего буднего дня использование «момента-бизнеса» 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>