¿Cómo puedo convertir un tiempo de cadena en un número de segundos, por ejemplo, una función de javascript to_number_of_seconds como esta?
let a = '1h'; let b = '3d'; let a = to_number_of_seconds(a); let b = to_number_of_seconds(b); y obtengo a=3600 y b=259200
Gracias por adelantado.
Aquí hay otro método que se puede usar para la mayoría de los formatos de tiempo:
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") => { const TimeElements = timeString.split(":"); return TimeElements.map((timeElement) => { return timeElementsJson[timeElement.slice(-1)] * +timeElement.slice(0, -1) }).reduce((a, b) => a + b, 0); } let a = '1h'; let b = '3d'; let a = to_number_of_seconds(a); let b = to_number_of_seconds(b);Esto se puede usar para cadenas como 'h', 'd', 'm', 's' y también se puede modificar para 'y', 'M', 'w' y una combinación de ellos como se declara en el parámetro de entrada (intente simplemente llamar a la función con valores de entrada vacíos).
Aquí hay un script simple que usa regex y destruct
const h = 60*60; const d = 24*h; const secs = {"h":h,"d":d}; const stringToSeconds = str => { 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)