@thi.ng/date
Version:
Datetime types, relative dates, math, iterators, composable formatters, locales
26 lines (25 loc) • 720 B
JavaScript
import { Z2, Z3, Z4 } from "@thi.ng/strings/pad-left";
import { decomposeDuration } from "./duration.js";
const defTimecode = (fps, opts = {}) => {
const {
sep = "::::",
day = false,
hour = true,
frame: useFrame = true
} = opts;
const frame = 1e3 / fps;
const $sep = (x) => sep[x] ?? ":";
const fmtFrame = fps < 100 ? Z2 : fps < 1e3 ? Z3 : Z4;
return (t) => {
const [_, __, d, h, m, s, ms] = decomposeDuration(t);
let parts = "";
if (d || day) parts += Z2(d) + $sep(0);
if (h || d || day || hour) parts += Z2(h) + $sep(1);
parts += Z2(m) + $sep(2) + Z2(s);
if (useFrame) parts += $sep(3) + fmtFrame(ms / frame | 0);
return parts;
};
};
export {
defTimecode
};