navidev-date-and-time
Version:
Utilidades de fecha y hora
139 lines (138 loc) • 4.08 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.find = void 0;
const types_1 = require("./types");
/**
* Ejecuta la expresión regular para el parseo
* @param re | Expresion regular
* @param str | string donde se aplica
* @returns | Estructura con el resultado
*/
const exec = (re, str) => {
let result = (re.exec(str) || [""])[0];
return { value: Number(result), length: result.length };
};
/**
* Busca el valor en un array
* @param array | Array de valores
* @param str | String a buscar
* @returns | Estructura con el resultado
*/
const find = (array, str) => {
var index = -1, length = 0;
for (var i = 0, len = array.length, item; i < len; i++) {
item = array[i];
if (!str.indexOf(item) && item.length > length) {
index = i;
length = item.length;
}
}
return { value: index, length: length };
};
exports.find = find;
class DateTimeParsers {
constructor() {
/**
* Busca el valor en un array
* @param array | Array de valores
* @param str | String a buscar
* @returns | Estructura con el resultado
*/
this.find = (array, str) => {
var index = -1, length = 0;
for (var i = 0, len = array.length, item; i < len; i++) {
item = array[i];
if (!str.indexOf(item) && item.length > length) {
index = i;
length = item.length;
}
}
return { value: index, length: length };
};
}
/**
* Devuelve el parsers de fecha y hora
* @returns Objeto con las funciones de parseo
*/
parser() {
return {
YYYY: (str) => {
return exec(/^\d{4}/, str);
},
Y: (str) => {
return exec(/^\d{1,4}/, str);
},
MM: (str) => {
return exec(/^\d\d/, str);
},
M: (str) => {
return exec(/^\d\d?/, str);
},
DD: (str) => {
return exec(/^\d\d/, str);
},
D: (str) => {
return exec(/^\d\d?/, str);
},
HH: (str) => {
return exec(/^\d\d/, str);
},
H: (str) => {
return exec(/^\d\d?/, str);
},
hh: (str) => {
return exec(/^\d\d/, str);
},
h: (str) => {
return exec(/^\d\d?/, str);
},
mm: (str) => {
return exec(/^\d\d/, str);
},
m: (str) => {
return exec(/^\d\d?/, str);
},
ss: (str) => {
return exec(/^\d\d/, str);
},
s: (str) => {
return exec(/^\d\d?/, str);
},
SSS: (str) => {
return exec(/^\d{1,3}/, str);
},
SS: (str) => {
var result = exec(/^\d\d?/, str);
result.value *= 10;
return result;
},
S: (str) => {
var result = exec(/^\d/, str);
result.value *= 100;
return result;
},
ZZ: (str) => {
var arr = /^([+-])(\d{2}):([0-5]\d)/.exec(str) || ["", "", "", ""];
return {
value: 0 -
(((Number(arr[1]) + Number(arr[2])) | 0) * 60 +
((Number(arr[1]) + Number(arr[3])) | 0)),
length: arr[0].length,
};
},
A: (str) => {
return this.find(types_1.A, str);
},
};
}
/**
* Devuelve la hora en formato 24 horas
* @param h Hora
* @param a 24/12 hora
* @returns Hora en formato 24h
*/
h12(h, a) {
return (h === 12 ? 0 : h) + a * 12;
}
}
exports.default = DateTimeParsers;