32 lines
1.1 KiB
JavaScript
32 lines
1.1 KiB
JavaScript
// dates.mjs
|
|
export const z2 = n => String(n).padStart(2,'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);
|
|
}
|
|
|
|
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())}`;
|
|
}
|
|
|
|
export const fmtHM = mins => {
|
|
const h = Math.floor(mins/60); const m = Math.round(mins%60);
|
|
return `${z2(h)}:${z2(m)}`;
|
|
};
|
|
|
|
// "YY/MM/DD" o "YYYY/MM/DD" (o '-') -> "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;
|
|
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')}`;
|
|
}
|