fechas
Una simple (muy simple) librería para el manejo de fechas.
Escrita en typescript (y en spanglish)
Para instalar:
npm i fechas
Uso
getFormatoFecha
getFormatoFecha (fecha: string): CodigoFormatoFecha;
Obtiene el formato de una fecha dada según los formatos definidos.
Los formatos validos estan definidos en el enum CodigoFormatoFecha
y pueden ser estos:
/** dd/mm/yyyy */
FMT_ESPANOL = 'ESPANOL',
/** dd-mm-yyyy */
FMT_ITALIANO = 'ITALIANO',
/** ddmmyyyy */
FMT_PLANO = 'PLANO',
/** yyyy/mm/dd */
FMT_INVERSO = 'INVERSO',
/** yyyymmdd */
FMT_INVERSOPLANO = 'INVERSOPLANO'
Ej:
import { getFormatoFecha } from "fechas";
getFormatoFecha('03-02-2020'); // ITALIANO
getFormatoFecha('2020/03/21'); // INVERSO
getFormatoFecha('2020.03.21'); // Error: Formato de fecha invalida
validarFecha
validarFecha (fecha: string): CodigoFormatoFecha;
Valida la consistencia de una fecha dada
Ej:
import { validarFecha } from "fechas";
validarFecha('36/05/2021'); // Error: Formato de dia invalido
validarFecha('29/02/2021'); // Error: Formato de dia invalido (año no bisiesto)
validarFecha('29/13/2021'); // Error: Formato de mes invalido
validarFecha('16/06/9021'); // Error: Formato de año invalido
validarFecha('30/08/2021'); // Correcto
setFormatoFecha
setFormatoFecha( fecha: string, tipoFormato: CodigoFormatoFecha ) : string;
Asigna alguno de los formatos validos a una fecha dada.
Ej:
import { setFormatoFecha } from "fechas";
setFormatoFecha('02/02/2020', CodigoFormatoFecha.FMT_INVERSO); // '2020/02/02'
getUltimoDiaMes
getUltimoDiaMes( fecha: string ): string;
Devuelve el final de mes para cada mes dado en alguno de los formatos validos. Considera años bisiestos.
Ej:
import { getUltimoDiaMes } from "fechas";
getUltimoDiaMes('03/02/2020'); // 29/02/2020
getUltimoDiaMes('16/03/2020'); // 31/03/2020
isBisiesto
isBisiesto(anio:number): boolean;
Indica si el año dado es bisiesto o no.
Ej:
import { isBisiesto } from "fechas";
isBisiesto(2020); //true
isBisiesto(2021); //false
getDiaHabilSiguiente
getDiaHabilSiguiente(fecha: string, listaFeriados: FormatoFeriados[]); string
Obtiene la próxima fecha hábil dados una fecha y el listado de feriados de su país
Ej:
import { getDiaHabilSiguiente } from "fechas";
export interface FormatoFeriados {
dia: string;
mes: string;
anio?: string
}
const feriados: FormatoFeriados[] = [
{dia : '01', mes : '01'},
{dia : '01', mes : '05'},
{dia : '21', mes : '05'},
{dia : '10', mes : '04', anio : '2020'}
]
getDiaHabilSiguiente('28/02/2020',feriados); // '02/03/2020'
El uso de la interfaz es opcional pero si esta empleando typescript se recomienda usar tipado de datos.
addDias
addDias (fecha: string, nDias: number): string;
Obtiene una nueva fecha al sumar o restar días.
Ej:
import { addDias } from "fechas";
addDias('01/02/2020', 1); // '02/02/2020'
addDias('01/02/2020', 30); // '02/03/2020'
addDiasHabiles
addDiasHabiles( fecha: string, cantidadDiazHabiles: number, listaFeriados: FormatoFeriados[] ): string;
Dados una fecha válida y un listado de feriados obtiene una nueva fecha hábil, al sumar o restar días hábiles.
Ej:
import { addDiasHabiles } from "fechas";
export interface FormatoFeriados {
dia: string;
mes: string;
anio?: string
}
const feriados: FormatoFeriados[] = [
{dia : '01', mes : '01'},
{dia : '25', mes : '12'},
{dia : '25', mes : '12', anio : '2019'}
{dia : '10', mes : '04', anio : '2020'}
]
addDiasHabiles('24/12/2019', 5, feriados); // '02/01/2020'
addMeses
addMeses(fecha: string, nMeses: number): string;
Suma N meses a una fecha sin importar el formato que este tenga, devolviendo una nueva fecha con el resultado de la suma y en el formato que ha sido enviada.
Ej:
import { addMeses } from "fechas";
addMeses('01/01/2020', 6); // '01/07/2020'
addMeses('01/10/2020', 3); // '01/01/2021'
restarFechas
restarFechas ( fecha1: string, fecha2: string ): number;
Obtiene la diferencia en días de dos fechas validas con el mismo formato
Ej:
import { restarFechas } from "fechas";
restarFechas('2019/09/14','2019/09/12'); // 2
restarFechas('14/09/2019','10/09/2019'); // 4
isHabil
isHabil ( fecha: string, listaFeriados: FormatoFeriados[] ): boolean;
Valida que una fecha sea hábil o no dados la fecha y el listado de feriados (de un país) . Valida feriados considerando dd-mm / dd-mm-yyyy y fines de semana.
Ej:
export interface FormatoFeriados {
dia: string;
mes: string;
anio?: string
}
const feriados: FormatoFeriados[] = [
{dia : '01', mes : '01'},
{dia : '25', mes : '12'},
{dia : '10', mes : '04', anio : '2020'}
]
isHabil('20/03/2020', feriados); // true
isHabil('10/04/2020', feriados); // false
FIN.