From f2a008c685a26fe2f87403cf692648dad693cbe8 Mon Sep 17 00:00:00 2001 From: Hatter Jiang Date: Sun, 19 Jan 2025 12:26:53 +0800 Subject: [PATCH] feat: update deno-commons-mod.ts --- libraries/deno-commons-mod.ts | 41 ++++++++++++++++++++++++++++++++++- 1 file changed, 40 insertions(+), 1 deletion(-) diff --git a/libraries/deno-commons-mod.ts b/libraries/deno-commons-mod.ts index 22d4855..450a3fa 100644 --- a/libraries/deno-commons-mod.ts +++ b/libraries/deno-commons-mod.ts @@ -1,7 +1,7 @@ // Reference: // - https://docs.deno.com/runtime/fundamentals/testing/ -import {assertEquals} from "jsr:@std/assert"; +import { assertEquals } from "jsr:@std/assert"; export function compareVersion(ver1: string, ver2: string): 0 | 1 | -1 { if (ver1 === ver2) return 0; @@ -35,6 +35,33 @@ export function isEnvOn(envKey: string): boolean { return isOn(Deno.env.get(envKey)); } +export function formatHumanTime(timeMillis: number): string { + const times = []; + if (timeMillis < 1000) { + return `${timeMillis}ms`; + } + const timeSecs = Math.floor(timeMillis / 1000); + const timeSecsLow = timeSecs % 60; + if (timeSecsLow > 0) { + times.push(`${timeSecsLow}s`); + } + const timeMinutes = Math.floor(timeSecs / 60); + const timeMinutesLow = timeMinutes % 60; + if (timeMinutesLow > 0) { + times.push(`${timeMinutesLow}m`); + } + const timeHours = Math.floor(timeMinutes / 60); + const timeHoursLow = timeHours % 24; + if (timeHoursLow > 0) { + times.push(`${timeHoursLow}h`); + } + const timeDays = Math.floor(timeHours / 24); + if (timeDays > 0) { + times.push(`${timeDays}d`); + } + return times.reverse().join(" "); +} + Deno.test("isOn", () => { assertEquals(false, isOn(undefined)); assertEquals(false, isOn("")); @@ -46,3 +73,15 @@ Deno.test("isOn", () => { assertEquals(true, isOn("ON")); assertEquals(true, isOn("1")); }); + +Deno.test("formatHumanTime", () => { + assertEquals("0ms", formatHumanTime(0)); + assertEquals("1ms", formatHumanTime(1)); + assertEquals("1s", formatHumanTime(1000)); + assertEquals("1s", formatHumanTime(1001)); + assertEquals("1m", formatHumanTime(60001)); + assertEquals("1m 1s", formatHumanTime(61001)); + assertEquals("1h", formatHumanTime(3600000)); + assertEquals("1h 1s", formatHumanTime(3601000)); + assertEquals("1h 1m 1s", formatHumanTime(3661000)); +});