UNPKG

simple-pure-utils

Version:

Funciones puras para manipulación de objetos, arreglos, promesas y observables

122 lines • 9.23 kB
import { assertUnreachable } from "."; /**Trunca la parte menos significativa de una fecha */ export function truncateDate(value, precision) { const year = value.getFullYear(); const month = value.getMonth(); const day = value.getDate(); const hour = value.getHours(); const minutes = value.getMinutes(); const seconds = value.getSeconds(); switch (precision) { case "milliseconds": return value; case "seconds": return new Date(year, month, day, hour, minutes, seconds); case "minutes": return new Date(year, month, day, hour, minutes); case "hours": return new Date(year, month, day, hour); case "days": return new Date(year, month, day); case "months": return new Date(year, month); case "years": return new Date(year, 0); } } /**Suma un valor en cierta unidad a una fecha */ export function addDate(date, units, value) { const ms = date.valueOf(); switch (units) { case "milliseconds": return new Date(ms + value); case "seconds": return new Date(ms + value * 1000); case "minutes": return new Date(ms + value * 1000 * 60); case "hours": return new Date(ms + value * 1000 * 60 * 60); case "days": //Note que no podemos sumar 24 horas por dia por lo del cambio de horario { const a = new Date(ms); a.setDate(a.getDate() + value); return a; } case "months": { const a = new Date(ms); a.setMonth(a.getMonth() + value); return a; } case "years": { const a = new Date(ms); a.setFullYear(a.getFullYear() + value); return a; } } } /** * Returns a - b */ export function dateDiff(a, b, units) { let x = a.valueOf() - b.valueOf(); if (units == "milliseconds") return x; x /= 1000; if (units == "seconds") return x; x /= 60; if (units == "minutes") return x; x /= 60; if (units == "hours") return x; x /= 24; if (units == "days") return x; assertUnreachable(units); } /** Returns a user friendly scale for the given time interval */ export function getTimeIntervalScale(seconds) { if (seconds < 60) { return { amount: seconds, units: "seconds", type: seconds < 1 ? "zero" : seconds == 1 ? "one" : seconds < 10 ? "few" : "number" }; } const minutes = Math.floor(seconds / 60); if (minutes < 30) { return { amount: minutes, units: "minutes", type: minutes < 2 ? "one" : "number" }; } const hours = Math.floor(minutes / 60); if (hours < 24) { return { amount: hours, units: "hours", type: minutes <= 30 ? "half" : hours < 2 ? "one" : "number" }; } const daysInYear = 364.25; const daysInMonth = daysInYear / 12; const days = Math.floor(hours / 24); if (days < daysInMonth) { return { amount: days, units: "days", type: days < 2 ? "one" : "number" }; } const months = Math.floor(days / daysInMonth); if (months < 12) { return { amount: months, units: "months", type: months < 2 ? "one" : "number" }; } const years = Math.floor(days / daysInYear); return { amount: years, units: "years", type: years < 2 ? "one" : "number" }; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZGF0ZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sR0FBRyxDQUFDO0FBR3RDLHNEQUFzRDtBQUN0RCxNQUFNLFVBQVUsWUFBWSxDQUFDLEtBQVcsRUFBRSxTQUFvQjtJQUMxRCxNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDakMsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQy9CLE1BQU0sR0FBRyxHQUFHLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUM1QixNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDOUIsTUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQ25DLE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUVuQyxRQUFRLFNBQVMsRUFBRTtRQUNmLEtBQUssY0FBYztZQUNmLE9BQU8sS0FBSyxDQUFDO1FBQ2pCLEtBQUssU0FBUztZQUNWLE9BQU8sSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztRQUM5RCxLQUFLLFNBQVM7WUFDVixPQUFPLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztRQUNyRCxLQUFLLE9BQU87WUFDUixPQUFPLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQzVDLEtBQUssTUFBTTtZQUNQLE9BQU8sSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQztRQUN0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