translate human time to seconds

This commit is contained in:
Mylloon 2022-11-03 17:21:43 +01:00
parent 0bdd2af66e
commit 21e69cf0c2
Signed by: Anri
GPG key ID: A82D63DFF8D1317F

View file

@ -10,16 +10,34 @@ export const showDate = (
locale: Map<string, unknown>,
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;
};