41 lines
1.5 KiB
JavaScript
41 lines
1.5 KiB
JavaScript
// Helpers comunes (nombres preservados)
|
|
export const z2 = n => String(n).padStart(2,'0');
|
|
export const pad2 = z2;
|
|
export const fmtHM = mins => { const h = Math.floor(mins/60); const m = Math.round(mins%60); return `${z2(h)}:${z2(m)}`; };
|
|
export const ymd = s => String(s||'').slice(0,10); // '2025-08-29T..' -> '2025-08-29'
|
|
|
|
// Normaliza fecha "YY/MM/DD" o "YYYY/MM/DD" a "YYYY-MM-DD"
|
|
export function normDateStr(s) {
|
|
const m = String(s || '').trim().match(/^(\d{2,4})[\/\-](\d{1,2})[\/\-](\d{1,2})$/);
|
|
if (!m) return null;
|
|
let [_, y, mo, d] = m;
|
|
let yy = parseInt(y, 10);
|
|
if (y.length === 2) yy = 2000 + yy; // 20YY
|
|
const mm = parseInt(mo, 10), dd = parseInt(d, 10);
|
|
if (!(mm >= 1 && mm <= 12 && dd >= 1 && dd <= 31)) return null;
|
|
return `${yy}-${String(mm).padStart(2,'0')}-${String(dd).padStart(2,'0')}`;
|
|
}
|
|
|
|
// Normaliza documento quitando ceros a la izquierda
|
|
export const cleanDoc = s => {
|
|
const v = String(s||'').trim().replace(/^0+/, '');
|
|
return v === '' ? '0' : v;
|
|
};
|
|
|
|
// Compat alias (mantener nombre)
|
|
export const normDoc = s => {
|
|
const v = String(s||'').replace(/\D/g,'').replace(/^0+/,'');
|
|
return v || '0';
|
|
};
|
|
|
|
export function toUTCms(isoDate, time) {
|
|
const [Y,M,D] = isoDate.split('-').map(n=>parseInt(n,10));
|
|
const [h,m,s] = time.split(':').map(n=>parseInt(n,10));
|
|
return Date.UTC(Y, (M||1)-1, D||1, h||0, m||0, s||0); // UTC fijo
|
|
}
|
|
export function fmtHMSUTC(ms){
|
|
const d = new Date(ms);
|
|
const z = n => String(n).padStart(2,'0');
|
|
return `${z(d.getUTCHours())}:${z(d.getUTCMinutes())}:${z(d.getUTCSeconds())}`;
|
|
}
|