From a9add9ea9affb42bdfcb17cf4b268feec5729854 Mon Sep 17 00:00:00 2001 From: PalmDevs Date: Tue, 2 Apr 2024 19:33:18 +0700 Subject: [PATCH] feat(bots/discord/utils): add duration utility --- bots/discord/src/utils/duration.ts | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 bots/discord/src/utils/duration.ts diff --git a/bots/discord/src/utils/duration.ts b/bots/discord/src/utils/duration.ts new file mode 100644 index 0000000..e2edafb --- /dev/null +++ b/bots/discord/src/utils/duration.ts @@ -0,0 +1,23 @@ +export const parseDuration = (duration: string) => { + if (!duration.length) return Number.NaN + const matches = duration.match(/(?:(\d+)d)?(?:(\d+)h)?(?:(\d+)m)?(?:(\d+)s?)?/)! + + const [, days, hours, minutes, seconds] = matches.map(Number) + return ( + (days || 0) * 24 * 60 * 60 * 1000 + + (hours || 0) * 60 * 60 * 1000 + + (minutes || 0) * 60 * 1000 + + (seconds || 0) * 1000 + ) +} + +export const durationToString = (duration: number) => { + const days = Math.floor(duration / (24 * 60 * 60 * 1000)) + const hours = Math.floor((duration % (24 * 60 * 60 * 1000)) / (60 * 60 * 1000)) + const minutes = Math.floor((duration % (60 * 60 * 1000)) / (60 * 1000)) + const seconds = Math.floor((duration % (60 * 1000)) / 1000) + + return `${days ? `${days}d` : ''}${hours ? `${hours}h` : ''}${minutes ? `${minutes}m` : ''}${ + seconds ? `${seconds}s` : '' + }` +}