Dadas from html string
by borisjavier
JavaScript
// Datos de la base de datos
const f0 = 1719705600;
const f = 1722384000;
const per = "trimestral";
// Función para convertir períodos a meses
function getPayableMonths(period) {
switch(period) {
case "mensual": return 1;
case "bimensual": return 2;
case "trimestral": return 3;
case "semestral": return 6;
case "anual": return 12;
case "bianual": return 24;
default: throw new Error("Período no reconocido");
}
}
// Función para convertir Unix timestamp a formato "YYYY-MM-DD"
Date.prototype.toFormat = function() {
const year = this.getUTCFullYear();
const month = String(this.getUTCMonth() + 1).padStart(2, '0');
const day = String(this.getUTCDate()).padStart(2, '0');
return `${year}-${month}-${day}`;
};
// Calcular las fechas
const payableMonths = getPayableMonths(per);
const iniOf = f0;
const endOf = f - 86400; // Restar un día (86400 segundos)
const iniProy = f;
const iniOp = f + (payableMonths * 30 * 86400); // Aproximación de meses a segundos (30 días por mes)
const endGP = iniOp + (payableMonths * 30 * 86400); // Aproximación de meses a segundos (30 días por mes)
// Convertir timestamps a objetos Date
const iniOfDate = new Date(iniOf * 1000);
const endOfDate = new Date(endOf * 1000);
const iniProyDate = new Date(iniProy * 1000);
const iniOpDate = new Date(iniOp * 1000);
const endGPDate = new Date(endGP * 1000);
// Crear el objeto de fechas formateadas
const fechas = [{
"iniOf": iniOfDate.toFormat(),
"endOf": endOfDate.toFormat(),
"iniProy": iniProyDate.toFormat(),
"iniOp": iniOpDate.toFormat(),
"endGP": endGPDate.toFormat()
}];
// Mostrar el resultado
console.log(fechas);
// Salida esperada (ejemplo, las fechas exactas dependen de los valores de timestamp):
// [{
// "iniOf": "2024-08-30",
// "endOf": "2024-09-29",
// "iniProy": "2024-09-30",
// "iniOp": "2024-12-29",
// "endGP": "2025-03-29"
// }]
const f1 =...