Este é um plug -in de um momento.js que permite que você trabalhe apenas com dias úteis (ou seja, de segunda a sexta -feira). Você pode personalizar a semana de trabalho e também definir datas personalizadas para férias para excluí -las de serem contadas como dias úteis, por exemplo, feriados nacionais .
NB: Ao adicionar ou subtrair os dias úteis de um objeto de um momento que cai em um dia não comercial, esse dia não será contado. Por exemplo:
// Using default working weekdays: Monday to Friday ([1, 2, 3, 4, 5])const saturday = moment('2022-01-01'); // Moment<2022-01-01T00:00:00+01:00>, Saturdayconst saturdayPlusTwo = saturday.businessAdd(2); // Momento <2022-01-04T00: 00: 00+01: 00>, terça-feira
Este plug -in funciona no lado do servidor e do cliente.
Este plug-in é baseado em motivadores.
Todas as contribuições são bem -vindas.
Obrigado aos colaboradores por melhorarem este plugin !!
// nodejs: requer em vez de momento padrão packageVar Moment = requer ('momento-negócio-dia'); // você poderá usar o momento.js como normalmente faz
<!-navegador-> <!-nb: adicione depois do momento.js-> <script src = "Moment.js"> </script> <script src = "momentiness-days.js"> </script>
var Moment = requer ('momentiness-days'); var de julho 4 = '2015-07-04'; var laboryday = '2015-09-07'; var boxingday = '2020-12-26'; Moment.UpDatelocale ('nós', { Feriados: [4 de julho, dia de trabalho], HolidayFormat: 'AAAA-MM-DD', forcedbusinessdays: [boxingday], forcedbusinessDaysFormat: 'yyyy-mm-dd'}); // moment-business-days agora parará de considerar esses feriados como dias úteis, mas ainda contam os dias úteis forçados.
var moment = require('moment-business-days');moment.updateLocale('us', { Workworkweekday: [1, 2, 3, 4, 5, 6]}); // define dias de 1 (segunda -feira) a 6 (sábado) como dias úteis. Observe que o domingo é o dia 0.// ao omitir esse parâmetro de configuração, os dias úteis são baseados no padrão do local
Os objetos retornados pelos métodos são os objetos MOME.JS (exceto .isBusinessDay()
e .businessDiff()
) para que você possa lidar com eles com os métodos nativos do momento.js .
.isHoliday()
=> booleanoVerifique se a data está entre as férias especificadas e retorne verdadeiro ou falso :
.isBusinessDay()
=> booleanVerifique se a data é um dia útil e retorne verdadeiro ou falso :
// 31st é sábado ('2015-01-31', 'yyyy-mm-dd'). Isbusinessday () // false // 30th é sexta-feira ('2015-01-30', 'yyyyy-mm-dd' ) .Isbusinessday () // true
.businessDaysIntoMonth()
=> númeroCalcule a quantidade de dias úteis desde o início do mês do momento .
var BusinessDaysSSsSsSsiEbeginningOftHemonth = Moment ('2021-07-01', 'AAAA-MM-DD'). ) .BusinessDaysIntomonth (); // BusinessDayssSsEbeginningOffThemonth = 0Var BusinessDaysSsSsiSbeginningOffThemonth = Moment ('2021-08-15', 'BusinesshemonMeMonMemonMemonthemonthemonthemonthemonthemonthemonthemonthemonthemonthemonthemonthemonthemonthemonthemonMemonMemonThemMonMemonThemMoMMEMMOMMOMMOMMOMMEMMOMMOMMEMOMMOMMEMOMMOMMEMOMMOMMOMMOMMEMOMENTO) - 31 ',' aaaa-mm-dd ').
.businessDiff()
=> númeroCalcule a quantidade de dias úteis entre as datas.
var diff = Moment ('2017-05-15', 'aaaa-mm-dd').
Observe que o comportamento padrão do businessDiff
é retornar um valor absoluto , que é um afastamento do diff
do momento. Para corresponder ao comportamento do diff
passa true
como o segundo argumento para businessDiff
:
var diff = Moment ('05 -08-2017 ',' yyyy-mm-dd '). BusinessDiff (Moment ('05 -15-2017', 'yyyy-mm-dd'), true); // diff = -5
.businessAdd(days)
=> momentoAdicionará o número de dias que não pulando dias de não negócios, retornando um momento.js objeto:
// 30º é FridayMoment ('2015-01-30', 'aaaaa-mm-dd').
.businessSubtract(days)
=> MomentoSubtrairá o número fornecido de dias pulando dias não comerciais, retornando um momento.js objeto:
// 27 é terça-feiraMoment ('27 -01-2015 ',' dd-mm-yyyy ').
.nextBusinessDay()
=> momentoRecuperará a próxima data comercial como um momento.js objeto:
// Próximo dia útil a partir de sexta-feira 30Moment ('2015-01-30', 'AAAA-MM-DD'). Nextbusinessday () ._ D // Seg 02 de fevereiro de 2015 00:00:00 GMT-0600 (CST) /// No próximo dia útil, a partir de segunda-feira, 2ndMoment ('2015-02-02', 'AAAA-MM-DD'). Nextbusinessday () ._ D // Ter fevereiro 03 2015 00:00:00 GMT-0600 (CST)
Por padrão, apenas 7 dias no futuro são verificados para o próximo dia útil. Para pesquisar além de 7 dias, defina o NextbusinessdayLimit (como um número) mais alto.
var Moment = requer ('momento-momento-dia'); Moment.UpDatelocale ('Us', { NextBusinessDayLimit: 31});
.prevBusinessDay()
=> MomentoRecuperará a data anterior da empresa como um momento.js objeto:
// Dia comercial anterior de segunda-feira 2ndMoment ('2015-02-02', 'AAAA-MM-DD'). PrevBusinessday () ._ D // FRI 30 de janeiro de 2015 00:00:00 GMT-0600 (CST) /// Dia útil anterior da terça-feira 3rdMoment ('2015-02-03', 'yyyy-mm-dd'). PrevBusinessday () ._ D // Seg 02
Por padrão, apenas os últimos 7 dias são verificados para o dia útil anterior. Para pesquisar além de 7 dias, defina o prevBusinessDayLimit (como um número) mais alto.
var Moment = requer ('momento-momento-dia'); Moment.UpDatelocale ('Us', { prevBusinessDayLimit: 31});
.monthBusinessDays()
=> Moment []Recuperar uma matriz dos dias úteis no mês, cada um é um momento .
// dias úteis em mês de janeiro de 2015Moment ('2015-01-01', 'yyyy-mm-dd'). MonthbusinessDays ()/*[{_isamomEntoBject: true, _i: '2015-01-01', _f: ' Yyyy-mm-dd ', _isutc: false, _pf: {...}, _locale: {...}, _d: thu Jan 01 2015 00:00:00 gmt-0600 (cst)} {...} , (...)]*/
.monthNaturalDays()
=> Moment [] É como .monthBusinessDays()
, mas esse método incluirá os fins de semana em sua resposta.
.monthBusinessWeeks()
=> Moment [] []Recuperar uma variedade de matrizes, essas matrizes são a representação de uma semana de negócios e a cada semana (matriz) têm seus próprios dias úteis (de segunda a sexta -feira). Pode haver o caso de uma semana (matriz) ter menos de 5 dias, isso ocorre porque o mês começou em meados de uma semana, por exemplo: a primeira semana de janeiro de 2015 tem apenas dois dias, quinta -feira 1 e sexta -feira 2. Cada dia na semana Matrizes são os objetos JS.
// Semanas de negócios em mês de janeiro de 2015Moment ('2015-01-01', 'yyyy-mm-dd'). Monthbusinessweeks ()/*[[{_isamomEntobject: true, _i: '01 -01-2015 ', _f: 'Dd-mm-yyyy', _isutc: false, _pf: [...], _locale: [...], _d: quinta-feira 01 Verdadeiro, _i: '01 -01-2015 ', _f:' dd-mm-yyyy ', _isutc: false, _pf: [...], _locale: [...], _d: sex. 02 de janeiro de 2015 00: 00:00 GMT-0600 (CST) } ], [...]]*/
.monthNaturalWeeks()
=> Moment [] [] É como .monthBusinessWeeks()
, mas esse método incluirá fins de semana em sua resposta.
// 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