Quiero convertir esto:
00:07:57,685 a segundos. Debería devolver 00*60 + 07*60 + 57,685 El problema es su formato. No logré escribir una función optimizada.
const input = "00:07:57,685"; const [hours, minutes, secondsRaw] = input.split(/:/g); const seconds = secondsRaw.replace(",", "."); let output = 0; output += parseInt(hours) * 3600; output += parseInt(minutes) * 60; output += parseFloat(seconds); console.log(`${output} seconds`);Aquí hay una muestra de trabajo:
function stringTimeToSecond (stringTime) { // convert from "," float notation to "." float notation // split your string to [h, m, s] // reverse to get [s, m, h] to be able to use indice on the reduce method const stringTimeArray = stringTime.replace(',','.').split(":").reverse(); // 60^0 = 1 for seconds // 60^1 = 60 for minutes // 60^2 = 3600 for hours return stringTimeArray.reduce((timeInSecond, time, i) => { timeInSecond += time * Math.pow(60, i); return timeInSecond; }, 0); }El método de reducción iterará a través de su matriz y luego devolverá su acumulador "timeInSecond". El acumulador se inicializa a 0 como segundo argumento de la función de reducción.
Creo que esto podría funcionar si entendí bien tu pregunta:
let timestamp = "00:07:57,685" let seconds = timestamp.split(":")[2].split(",")[0]