simple-pure-utils
Version:
Funciones puras para manipulación de objetos, arreglos, promesas y observables
129 lines • 9.54 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.getTimeIntervalScale = exports.dateDiff = exports.addDate = exports.truncateDate = void 0;
const _1 = require(".");
/**Trunca la parte menos significativa de una fecha */
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);
}
}
exports.truncateDate = truncateDate;
/**Suma un valor en cierta unidad a una fecha */
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;
}
}
}
exports.addDate = addDate;
/**
* Returns a - b
*/
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;
(0, _1.assertUnreachable)(units);
}
exports.dateDiff = dateDiff;
/** Returns a user friendly scale for the given time interval */
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"
};
}
exports.getTimeIntervalScale = getTimeIntervalScale;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZGF0ZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsd0JBQXNDO0FBR3RDLHNEQUFzRDtBQUN0RCxTQUFnQixZQUFZLENBQUMsS0FBVyxFQUFFLFNBQW9CO0lBQzFELE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNqQyxNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDL0IsTUFBTSxHQUFHLEdBQUcsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQzVCLE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUM5QixNQUFNLE9BQU8sR0FBRyxLQUFLLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDbkMsTUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBRW5DLFFBQVEsU0FBUyxFQUFFO1FBQ2YsS0FBSyxjQUFjO1lBQ2YsT0FBTyxLQUFLLENBQUM7UUFDakIsS0FBSyxTQUFTO1lBQ1YsT0FBTyxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQzlELEtBQUssU0FBUztZQUNWLE9BQU8sSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ3JELEtBQUssT0FBTztZQUNSLE9BQU8sSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDNUMsS0FBSyxNQUFNO1lBQ1AsT0FBTyxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ3RDLEtBQUssUUFBUTtZQUNULE9BQU8sSUFBSSxJQUFJ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
;