#javascript
Вопрос:
как я могу превратить строковое время в количество секунд, например, в такую функцию javascript to_number_of_seconds
, как эта.
let a = '1h'; let b = '3d'; let a = to_number_of_seconds(a); let b = to_number_of_seconds(b);
и я получаю a=3600
и b=259200
Заранее спасибо.
Ответ №1:
Вот простой скрипт, использующий регулярное выражение и разрушение
const h = 60*60; const d = 24*h; const secs = {"h":h,"d":d}; const stringToSeconds = str =gt; { const [_,num,unit] = str.match(/(d )(w)/); return num * secs[unit]; }; let a = '1h'; let b = '3d'; let secs1 = stringToSeconds(a); let secs2 = stringToSeconds(b); console.log(secs1,secs2)
Ответ №2:
Вот еще один метод, который можно использовать в большинстве форматов времени :
const s = 1, m = 60 * s, h = 60 * m, d = 24 * h; const timeElementsJson = { s, m, h, d }; const to_number_of_seconds = (timeString = "1d:2h:35m:25s") =gt; { const TimeElements = timeString.split(":"); return TimeElements.map((timeElement) =gt; { return timeElementsJson[timeElement.slice(-1)] * timeElement.slice(0, -1) }).reduce((a, b) =gt; a b, 0); } let a = '1h'; let b = '3d'; let a = to_number_of_seconds(a); let b = to_number_of_seconds(b);
Это может быть использовано для таких строк, как «h», «d», «m», «s», а также может быть изменено для «y», «M», » w » и их комбинации, как указано во входном параметре (попробуйте просто вызвать функцию с пустыми входными значениями).