Este es un complemento de momento.js que le permite trabajar solo con días hábiles (es decir, de lunes a viernes). Puede personalizar la semana laboral y también establecer fechas personalizadas para las vacaciones para excluirlos de ser contados como días hábiles, por ejemplo, vacaciones nacionales .
NB: Al sumar o restar los días hábiles de un objeto de momento que cae en un día no comercial, ese día no se contará. Por ejemplo:
// Uso de los días de semana de trabajo predeterminados: de lunes a viernes ([1, 2, 3, 4, 5]) const sábado = momento ('2022-01-01'); // Momento <2022-01-01T00: 00: 00+01: 00>, SaturdayConst Saturday Plustwo = Saturday.BusinessAdd (2); // Momento <2022-01-04T00: 00: 00+01: 00>, martes
Este complemento funciona en el lado del servidor y el cliente.
Este complemento se basa en MomentJs-Business.
Todas las contribuciones son bienvenidas.
¡Gracias a los contribuyentes por mejorar este complemento!
// nodejs: requerir en lugar de un momento estándar de paquete de momento = requirir ('Moment-Business-Days'); // Podrá usar Moment.js como lo hace normalmente
< </script>
var momento = request ('momento-negocio-día'); var julio4th = '2015-07-04'; var LaborDay = '2015-09-07'; var boxingday = '2020-12-26'; momento.updatelocale ('a nosotros', { Vacaciones: [4 de julio, LaborDay], HolidayFormat: 'aaa yyy-mm-dd', ForcedBusinessdays: [Boxingday], ForcedBusinessDaySformat: 'aaa yyy-mm-dd'}); // Los días de negocios de momento ahora dejarán de considerar estos días festivos como días hábiles, pero aún así contarán los días hábiles forzados.
var momento = require ('momento-negocio-día'); momento.updatelocale ('nosotros', { WorkingWeekdays: [1, 2, 3, 4, 5, 6]}); // Define días del 1 (lunes) al 6 (sábado) como días hábiles. Tenga en cuenta que el domingo es el día 0.// Al omitir este parámetro de configuración, los días hábiles se basan en el valor predeterminado de la localidad
Los objetos devueltos por los métodos son momento.js objetos (excepto .isBusinessDay()
y .businessDiff()
) para que pueda manejarlos con métodos nativos de momento.js .
.isHoliday()
=> booleanoCompruebe si la fecha se encuentra entre las vacaciones especificadas y devuelve verdadero o falso :
.isBusinessDay()
=> booleanCompruebe si la fecha es un día hábil y devuelve verdadero o falso :
// 31 es SaturdayMoment ('2015-01-31', 'aaa yyyy-mm-dd'). Isbusinessday () // falso // 30th es FridayMoment ('2015-01-30', 'yyyy-mm-dd' ) .Isbusinessday () // Verdadero
.businessDaysIntoMonth()
=> NúmeroCalcule la cantidad de días hábiles desde el comienzo del mes del momento . JS Object.
var BusinessDaysSssSnEnbeginningOfThemonth = Moment ('2021-07-01', 'aaa yyyy-mm-dd'). BusinessDaySIntomonth (); // BusinessssssSninceBeginningOfThemonth ) .BusinessDaySIntomonth (); // BusinessSssSnEnbeginningOfThemonth = 0Var BusinessDaySSSEnbeginninnofThemonth = Moment ('2021-08-15', 'yyyyyy-mm-dd'). BusinessDomonTh (); - 31 ',' yyyy-mm-dd '). BusinessDaySIntomonth (); // BusinessDaySsCnebeginningOfThemonth = 22
.businessDiff()
=> NúmeroCalcule la cantidad de días hábiles entre las fechas.
var diff = momento ('2017-05-15', 'aaa yyyy-mm-dd'). BusinessDiff (momento ('2017-05-08', 'yyyy-mm-dd')); // diff = 5
Tenga en cuenta que el comportamiento predeterminado de businessDiff
es devolver un valor absoluto , que es una desviación de diff
de momento. Para que coincida con el comportamiento de diff
pase true
como el segundo argumento con businessDiff
:
var diff = momento ('05 -08-2017 ',' yyyy-mm-dd '). BusinessDiff (momento ('05 -15-2017', 'aaaa-mm-dd'), true); // diff = -5
.businessAdd(days)
=> momentoAgregará el número dado de días omitiendo días no comerciales, devolviendo un momento. JS Object:
// 30 es FridayMoment ('2015-01-30', 'aaa yyyy-mm-dd'). BusinessAdd (3) ._ D // miércoles 04 de febrero 2015 00:00:00 GMT-0600 (CST)
.businessSubtract(days)
=> momentoRestará el número dado de días omitiendo días no comerciales, devolviendo un momento. JS Object:
// 27 es martesmomente ('27 -01-2015 ',' dd-mm-yyyy '). BusinessSubtract (3) ._ d // jueves 22 de enero 2015 00:00:00 GMT-0600 (CST)
.nextBusinessDay()
=> momentoRecuperará la próxima fecha de negocio como un momento. JS Object:
// Siguiente día hábil desde el viernes 30 de MOMENT ('2015-01-30', 'aaa yyyy-mm-dd'). NextBusinessday () ._ d // lunes 02 de febrero 2015 00:00:00 GMT-0600 (CST) // Siguiente día hábil del lunes 2ndmoment ('2015-02-02', 'aaa yyyy-mm-dd'). NextBusinessday () ._ d // martes 03 de febrero 2015 00:00:00 GMT-0600 (CST)
Por defecto, solo se verifican solo 7 días en el futuro para el siguiente día hábil. Para buscar más allá de los 7 días establece el NextBusinessdayLimit (como un número) más alto.
var momento = require ('momento-negocio-día'); momento.updatelocale ('nosotros', { nextbusinessdaylimit: 31});
.prevBusinessDay()
=> momentoRecuperará la fecha comercial anterior como un momento. JS Object:
// Día hábil anterior del lunes 2ndmoment ('2015-02-02', 'aaa yyyy-mm-dd'). Prevbusinessday () ._ d // fri 30 de enero de 2015 00:00:00 GMT-0600 (CST) // Día comercial anterior del martes 3rdmoment ('2015-02-03', 'aaaa yyy-mm-dd'). Prevbusinessday () ._ d // lun 02 de febrero 2015 00:00:00 GMT-0600 (CST)
Por defecto, solo se verifican los últimos 7 días para el día hábil anterior. Para buscar más allá de los 7 días, establece el PrevbusinessDayLimit (como un número) más alto.
var momento = require ('momento-negocio-día'); momento.updatelocale ('nosotros', { PrevbusinessDayLimit: 31});
.monthBusinessDays()
=> momento []Recupere una matriz de los días hábiles en el mes, cada uno es un momento . JS Object.
// días hábiles en el mes de enero de 2015Moment ('2015-01-01', 'aaaa yyy-mm-dd'). MessBusinessDays ()/*[{_isamomentObject: true, _i: '2015-01-01', _f: ' Yyyy-mm-dd ', _isutc: false, _pf: {...}, _locale: {...}, _d: jueves 01 de enero 2015 00:00:00 GMT-0600 (CST)}} {} , (...)]*/
.monthNaturalDays()
=> momento [] Es como .monthBusinessDays()
, pero este método incluirá los fines de semana en su respuesta.
.monthBusinessWeeks()
=> momento [] []Recuperar una matriz de matrices, estas matrices son la representación de una semana empresarial y cada semana (matriz) tienen sus propios días hábiles (de lunes a viernes). Podría haber el caso de que una semana (matriz) tenga menos de 5 días, esto se debe a que el mes comenzó a mediados de una semana, por ejemplo: la primera semana de enero de 2015 tiene solo dos días, jueves 1 y viernes 2. Cada día de la semana, las matrices son momentos. JS objetos.
// Semanas de negocios en mes enero de 2015Moment ('2015-01-01', 'yyyy-mm-dd'). MessBusinessWeeks ()/*[[{_isamomentObject: true, _i: '01 -01-2015 ', _f: 'Dd-mm-yyyy', _isutc: false, _pf: [...], _locale: [...], _d: thú 01 de enero 2015 00:00:00 GMT-0600 (CST)}, {_isamomentObject: Verdadero, _i: '01 -01-2015 ', _f:' dd-mm-yyyy ', _isutc: falso, _pf: [...], _locale: [...], _d: viernes 02 de enero de 2015 00: 00:00 GMT-0600 (CST)}], [...]]*/
.monthNaturalWeeks()
=> momento [] [] Es como .monthBusinessWeeks()
, pero este método incluirá fines de semana en su respuesta.
// 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