Это момент плагина. Вы можете настроить рабочую неделю, а также установить настраиваемые даты для праздников, чтобы исключить их из того, что они считаются рабочими днями, например, национальные праздники .
NB: При добавлении или вычтении рабочих дней из момента объекта, который падает в не бизнес-день, этот день не будет учитываться. Например:
// Использование рабочих дней по умолчанию: с понедельника по пятницу ([1, 2, 3, 4, 5]) const Saturday = Moment ('2022-01-01'); // момент <2022-01-01t00: 00: 00+01: 00>, SaturdayConst SaturdayPlustwo = Saturday.BusinessAdd (2); // Момент <2022-01-04T00: 00: 00+01: 00>, вторник
Этот плагин работает как на стороне сервера, так и на стороне клиента.
Этот плагин основан на Momentjs-Business.
Все взносы приветствуются.
Спасибо участникам за то, что сделали этот плагин лучше !!
// nodejs: требуется вместо стандартного момента PackageVar Moment = require ('Moment-Business Days'); // Вы сможете использовать Moment.js, как обычно делаете
<!-Браузер-> <!-nb: Добавить After moment.js-> <script src = "moment.js"> </script> <script src = "Moment Business Days.js"> </script>
var moment = require ('' mommon-business-days '); var июль 4 июля =' 2015-07-04 '; var laborday =' 2015-09-07 '; var boxingday =' 2020-12-26 '; moment.updateLocale ('нас', { Праздники: [4 июля, Laborday], HolidayFormat: 'yyyy-mm-dd', Принудительные дни: [Boxingday], Принудительный сайт DaysFormat: 'Yyyy-mm-dd'}); // моментные дни перестанут рассматривать эти праздники как рабочие дни, но все же считают принудительные рабочие дни.
var moment = require ('моментные дни'); moment.updateLocale ('us', { Workingweekdays: [1, 2, 3, 4, 5, 6]}); // определяет дни с 1 (понедельник) до 6 (суббота) как рабочие дни. Обратите внимание, что воскресенье - день 0./// При проведении этого параметра конфигурации рабочие дни основаны на локале по умолчанию
Объектами, возвращаемыми методами, являются объекты Moment.js (кроме .isBusinessDay()
и .businessDiff()
), поэтому вы можете справиться с ними с помощью нативных методов Moment.js .
.isHoliday()
=> BooleanПроверьте, является ли дата среди указанных праздников, и вернуть True или False :
.isBusinessDay()
=> booleanПроверьте, является ли дата рабочего дня, и вернуть True или False :
// 31-й-суббота ('2015-01-31', 'yyyy-mm-dd'). Isbusinessday () // false // 30th-пятница ('2015-01-30,' yyyy-mm-dd ' ) .isbusinessday () // true
.businessDaysIntoMonth()
=> номерРассчитайте количество рабочих дней с начала месяца момента .
VAR BusinessDaysSinceBeginningOfTheMonth = Moment ('2021-07-01', 'Yyyy-mm-dd'). BusinessDaysintomonth (); // BusinessDaysSincebeginningofthemonth = 1var BusinessDaysSincebeginningofthemonth = момент (2021-08-01 ',' yyyy-mm-mm-mm-mm-mm-mm-mm-dd '-dd'-dd '-dd'-dd '-dd'-dd '-dd'-dd '-dd'-dd '-dd'-dd '-mm-dd'-dd 'yyyy-mm-mm-mm-mm-mm-dd'-dd ' ) - 31 ',' yyyy-mm-dd '). BusinessDaySintomonth (); // businessdayssincebeginningofthemonth = 22
.businessDiff()
=> номерРассчитайте количество рабочих дней между датами.
var diff = moment ('2017-05-15', 'yyyy-mm-dd'). BusinessDiff (Moment ('2017-05-08', 'yyyy-mm-dd')); // diff = 5
Обратите внимание, что поведение businessDiff
по умолчанию состоит в том, чтобы вернуть абсолютную ценность, которая является отходом от diff
. Чтобы соответствовать поведению diff
true
в качестве второго аргумента для businessDiff
:
var diff = moment ('05 -08-2017 ',' yyyy-mm-dd '). BusinessDiff (Moment ('05 -15-2017', 'yyyy-mm-dd'), true); // diff = -5
.businessAdd(days)
=> МоментДобавит заданное количество дней, пропускающих не деловые дни, возвращаясь на мгновение .
// 30-е место-пятница ('2015-01-30', 'yyyy-mm-dd'). BusinessAdd (3) ._ D // Ср. 04 февраля 2015 г. 00:00:00 GMT-0600 (CST)
.businessSubtract(days)
=> МоментВычтет заданное количество дней, пропуская не деловые дни, возвращаясь на мгновение .
// 27-е место вторник Momoment ('27 -01-2015 ',' dd-mm-yyyy '). BusinessSubtract (3) ._ D // Thu 22 января 2015 00:00:00 GMT-0600 (CST)
.nextBusinessDay()
=> MomentПолучит следующую бизнес -дату как мгновение .
// Следующий рабочий день с пятницы 30-й моментов ('2015-01-30', 'yyyy-mm-dd'). NextBusinessday () ._ D // понедельник 02 2015 00:00:00 GMT-0600 (CST) //// Следующий рабочий день с понедельника 2ndmoment ('2015-02-02', 'yyyy-mm-dd'). NextBusinessday () ._ D // Вторник 03 февраля 2015 00:00:00 GMT-0600 (CST)
По умолчанию всего за 7 дней в будущее проверяются на следующий рабочий день. Поиск за 7 дней установите NextBusinessDayLimit (как число) выше.
var moment = require ('моментные дни'); moment.updateLocale ('us', { NextBusinessDayLimit: 31});
.prevBusinessDay()
=> MomentИзвлечет предыдущую дату бизнеса как момент .
// Предыдущий рабочий день понедельника 2ndmoment ('2015-02-02', 'yyyy-mm-dd'). Prevbusinessday () ._ D // пт 30 января 2015 00:00:00 GMT-0600 (CST) //// Предыдущий рабочий день во вторник 3-й 3rdmoment ('2015-02-03', 'yyyy-mm-dd'). Prevbusinessday () ._ D // Пн февраля 02 2015 00:00:00 GMT-0600 (CST)
По умолчанию только последние 7 дней проверяются на предыдущий рабочий день. Поиск более 7 дней установите PrevbusinessdayLimit (как число) выше.
var moment = require ('моментные дни'); moment.updateLocale ('us', { PrevbusinessdayLimit: 31});
.monthBusinessDays()
=> moment []Получите массив рабочих дней в месяце, каждый из них - момент .
// рабочие дни в месяце января 2015 г. Moment ('2015-01-01', 'yyyy-mm-dd'). Monthbusinessdays ()/*[{_isamomentobject: true, _i: '2015-01-01', _f: ' Yyyy-mm-dd ', _isutc: false, _pf: {...}, _locale: {...}, _d: thu 01 января 2015 00:00:00 Gmt-0600 (CST)} {...} , (...)]*/
.monthNaturalDays()
=> moment [] Это как .monthBusinessDays()
, но этот метод будет включать в себя выходные в его ответе.
.monthBusinessWeeks()
=> moment [] []Получите массив массивов, эти массивы являются представлением деловых недель, и каждую неделю (массив) есть свои рабочие дни (с понедельника по пятницу). Может быть, если одна неделя (массив) будет менее 5 дней, это потому, что месяц, начатый в середине недели, например: в первой неделе января 2015 года всего два дня, четверг 1 -го и пятницу 2 -й. Каждый день на неделе массивы - это Moment.js объекты.
// бизнес-недели в месяце января 2015 г. Момен ('2015-01-01', 'yyyy-mm-dd'). Monthbusinessweeks ()/*[[{_isamomentobject: true, _i: '01 -01-2015 ', _f: 'Dd-mm-yyyy', _isutc: false, _pf: [...], _locale: [...], _d: thu 01 января 2015 00:00:00 Gmt-0600 (CST)}, {_isamomentObject: Верно, _i: '01 -01-2015 ', _f:' dd-mm-yyyy ', _isutc: false, _pf: [...], _locale: [...], _d: пт 02 2015 00: 00:00 GMT-0600 (CST)}], [...]]*/
.monthNaturalWeeks()
=> moment [] [] Это похоже на .monthBusinessWeeks()
, но этот метод будет включать в себя выходные в ответ.
// For Node.js $ npm install moment-business-days // ...or install and save in package.json $ npm install --save moment-business-days // For bower $ bower install moment-business-days
npm test