From 21e69cf0c2565599a887d1a25c7e0eaeab0a4993 Mon Sep 17 00:00:00 2001 From: Mylloon Date: Thu, 3 Nov 2022 17:21:43 +0100 Subject: [PATCH] translate human time to seconds --- src/utils/time.ts | 26 ++++++++++++++++++++++---- 1 file changed, 22 insertions(+), 4 deletions(-) diff --git a/src/utils/time.ts b/src/utils/time.ts index 12434c1..bbbc6f5 100644 --- a/src/utils/time.ts +++ b/src/utils/time.ts @@ -10,16 +10,34 @@ export const showDate = ( locale: Map, date: Date ) => { - return date.toLocaleString(tz).replace(' ', ` ${ - locale.get('u_time_at') - } `); + return date.toLocaleString(tz).replace(' ', ` ${locale.get('u_time_at')} `); }; +enum TimeSecond { + Year = 31536000, + Week = 604800, + Day = 86400, + Hour = 3600, + Minute = 60, + Second = 1 +} + /** * Take a cooldown, for example 2min and transform it to seconds, here: 120s * @param time time in human format * @returns time in seconds */ export const strToSeconds = (time: string) => { - return 0; + const regex = new RegExp(`(?<${TimeSecond[TimeSecond.Year]}>[0-9]+(?=[y|a]))|(?<${TimeSecond[TimeSecond.Week]}>[0-9]+(?=[w]))|(?<${TimeSecond[TimeSecond.Day]}>[0-9]+(?=[d|j]))|(?<${TimeSecond[TimeSecond.Hour]}>[0-9]+(?=[h]))|(?<${TimeSecond[TimeSecond.Minute]}>[0-9]+(?=[m]))|(?<${TimeSecond[TimeSecond.Second]}>[0-9]+(?=[s]?))`); + + const data = Object.assign({}, regex.exec(time)?.groups); + + let res = 0; + Object.entries(data).forEach(([key, value]) => { + if (value) { + res += +value * TimeSecond[key as keyof typeof TimeSecond]; + } + }); + + return res; };