mirror of
https://github.com/Sendouc/sendou.ink.git
synced 2026-10-03 00:27:30 -05:00
Move app to apps/web-react in pnpm workspace layout
This commit is contained in:
37
apps/web-react/app/features/scanner/components/format.ts
Normal file
37
apps/web-react/app/features/scanner/components/format.ts
Normal file
@@ -0,0 +1,37 @@
|
||||
import { useDateTimeFormat } from "~/hooks/intl/useDateTimeFormat";
|
||||
|
||||
/** hh:mm:ss for feed rows, CSV cells, and scan progress. */
|
||||
export function formatTime(t: number): string {
|
||||
const h = Math.floor(t / 3600);
|
||||
const m = Math.floor((t % 3600) / 60);
|
||||
const s = Math.floor(t % 60);
|
||||
return `${String(h).padStart(2, "0")}:${String(m).padStart(2, "0")}:${String(s).padStart(2, "0")}`;
|
||||
}
|
||||
|
||||
/** the match timer's M:SS (215 → "3:35") */
|
||||
export function formatClock(seconds: number): string {
|
||||
const m = Math.floor(seconds / 60);
|
||||
const s = Math.floor(seconds % 60);
|
||||
return `${m}:${String(s).padStart(2, "0")}`;
|
||||
}
|
||||
|
||||
/**
|
||||
* Locale-aware time-of-day formatter for detection timestamps (epoch ms)
|
||||
* shown in scanner cards, in place of a raw `toLocaleTimeString()` call.
|
||||
*/
|
||||
export function useEventTimeFormatter(): (ms: number) => string {
|
||||
const { formatter } = useDateTimeFormat({ timeStyle: "medium" });
|
||||
return (ms: number) => formatter.format(new Date(ms));
|
||||
}
|
||||
|
||||
/**
|
||||
* Locale-aware date+time formatter for absolute timestamps (epoch ms), e.g.
|
||||
* a saved VoD's scan time, in place of a raw `toLocaleString()` call.
|
||||
*/
|
||||
export function useEventDateTimeFormatter(): (ms: number) => string {
|
||||
const { formatter } = useDateTimeFormat({
|
||||
dateStyle: "medium",
|
||||
timeStyle: "medium",
|
||||
});
|
||||
return (ms: number) => formatter.format(new Date(ms));
|
||||
}
|
||||
Reference in New Issue
Block a user