как превратить строковое время в количество секунд на языке javascript

#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 » и их комбинации, как указано во входном параметре (попробуйте просто вызвать функцию с пустыми входными значениями).