import {pad0} from "./text.ts";
export function utEncode(date?:Date):number{ return Math.floor((date ?? new Date()).getTime() / 1000);}
export function utDecode(time:number):Date{ return new Date(time * 1000);}
export function utParse(ds:string):number{ const [y, m, d, h, mi, s] = ds.split(/[/ :TZ_.-]/i).map(v => Number(v));
return utEncode(new Date(y, (m ?? 1) - 1, d ?? 1, h ?? 0, mi ?? 0, s ?? 0));}
export async function delay(time:number):Promise<number>{ const t0 = performance.now(); await new Promise<void>(done => setTimeout(done, time)); const t1 = performance.now();
return Math.ceil(t1 - t0);}
export function dtSerial(date?:Date, split?:boolean):string{ const d = date ?? new Date(); const ss = split ? "/" : ""; const sc = split ? ":" : "";
return `${d.getFullYear()}${ss}${pad0(d.getMonth() + 1)}${ss}${pad0(d.getDate())}${split ? " " : ""}${pad0(d.getHours())}${sc}${pad0(d.getMinutes())}${sc}${pad0(d.getSeconds())}`;}