Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 | 1x 1x 1x 1x 1x 1x 31x 31x 30x 30x 30x 30x 166x 4x 4x 162x 26x 26x 30x 30x 18x 18x 3x 3x 3x 3x 3x 3x 3x 3x 30x 1x | import { CodigoFormatoFecha, diasDelMes, ErroresComunes } from "../constants";
import { getFormatoFecha } from "./getformatofecha";
import { validarFecha } from "./validarfecha";
import { disgregarFecha } from "./disgregarfecha";
import { isBisiesto } from "./bisiesto";
/**
*
* @param fecha
* Devuelve el final de mes para cada mes dado en alguno de los formatos validos. Considera aƱos bisiestos.
*/
export function getUltimoDiaMes( fecha: string ): string {
try {
validarFecha(fecha);
const mesFebrero = '02';
const ultimoDiaBisiesto = '29';
let ultimoDia: string;
const {mes, anio} = disgregarFecha(fecha);
for (let fecha of diasDelMes){
if ( isBisiesto(anio) && mes === mesFebrero ){
ultimoDia = ultimoDiaBisiesto;
break;
} else if (mes === fecha.mes){
ultimoDia = fecha.dia;
break;
}
}
const formato = getFormatoFecha(fecha);
let fechaUltimoDiaMes;
switch (formato){
case CodigoFormatoFecha.FMT_ESPANOL:
/* dd/mm/yyyy */
fechaUltimoDiaMes = ultimoDia + '/' + mes + '/' + anio;
break;
case CodigoFormatoFecha.FMT_ITALIANO:
/* dd-mm-yyyy*/
fechaUltimoDiaMes = ultimoDia + '-' + mes + '-' + anio;
break;
case CodigoFormatoFecha.FMT_PLANO:
/* ddmmyyyy*/
fechaUltimoDiaMes = ultimoDia + mes + anio;
break;
case CodigoFormatoFecha.FMT_INVERSOPLANO:
/* yyyymmdd */
fechaUltimoDiaMes = anio + mes + ultimoDia;
break;
case CodigoFormatoFecha.FMT_INVERSO:
/* yyyy/mm/dd */
fechaUltimoDiaMes = anio + '/' + mes + '/' + ultimoDia;
break;
}
return fechaUltimoDiaMes;
} catch (error) {
throw (error);
}
} |