Finished general stats

This commit is contained in:
2025-09-02 22:13:56 +02:00
parent 7008b44a00
commit e536054d2d
5 changed files with 106 additions and 5 deletions

View File

@@ -13,12 +13,31 @@ const dateFormatter = new Intl.DateTimeFormat("en-GB", {
hour12: false
})
export function formatNumber(num: number): string {
export function formatNumber(num: number) {
return numberFormatter.format(num)
}
export function formatDate(timestamp: number): string {
export function formatDate(timestamp: number) {
return dateFormatter.format(new Date(timestamp))
}
export function formatSecondsToTime(seconds: number) {
if (!Number.isFinite(seconds)) return "0s"
seconds = Math.floor(Math.max(0, seconds))
const days = Math.floor(seconds / 86400)
const hours = Math.floor((seconds % 86400) / 3600)
const minutes = Math.floor((seconds % 3600) / 60)
const secs = seconds % 60
const parts: string[] = []
if (days) parts.push(days + "d")
if (hours) parts.push(hours + "h")
if (minutes) parts.push(minutes + "m")
if (secs || parts.length === 0) parts.push(secs + "s")
if (parts.length === 1) return parts[0]
if (parts.length === 2) return parts[0] + " and " + parts[1]
// For 3+ parts: separate first n-1 by comma+space, last preceded by 'and'
return parts.slice(0, -1).join(", ") + " and " + parts[parts.length - 1]
}
export function formatRelativeTime(timestamp: number, type: "past" | "future") {
const now = Date.now()