Búsqueda de sitios web

hora - Convertir cadena HH:MM:SS a solo segundos en javascript


Tengo un requisito similar a este: ¿Convertir el tiempo en formato HH:MM:SS solo a segundos?

pero en JavaScript. He visto muchos ejemplos de cómo convertir segundos en diferentes formatos, pero no HH:MM:SS en segundos.

Respuesta #1

Prueba esto:

var hms = '02:04:33';   // your input string
var a = hms.split(':'); // split it at the colons

// minutes are worth 60 seconds. Hours are worth 60 minutes.
var seconds = (+a[0]) * 60 * 60 + (+a[1]) * 60 + (+a[2]); 

console.log(seconds);

Respuesta #2

Esta función maneja "HH:MM:SS" así como "MM:SS" o "SS".

function hmsToSecondsOnly(str) {
    var p = str.split(':'),
        s = 0, m = 1;

    while (p.length > 0) {
        s += m * parseInt(p.pop(), 10);
        m *= 60;
    }

    return s;
}

Respuesta #3

Esto se puede hacer de manera bastante resistente con lo siguiente:

'01:02:03'.split(':').reduce((acc,time) => (60 * acc) + +time);

Esto se debe a que cada unidad de tiempo dentro de las horas, minutos y segundos es un múltiplo de 60 mayor que la unidad más pequeña. El tiempo se divide en componentes de horas, minutos y segundos, y luego se reduce a segundos utilizando el valor acumulado de las unidades superiores multiplicado por 60 a medida que se pasa por cada unidad.

El +time se usa para convertir el tiempo en un número.

Básicamente termina haciendo: (60 * ((60 * HHHH) + MM)) + SS

Si solo se pasan segundos, entonces el resultado sería una cadena, así que para solucionar eso podríamos convertir todo el resultado a un entero:

+('03'.split(':').reduce((acc,time) => (60 * acc) + +time));

Respuesta #4

Dado que la función getTime del objeto Date obtiene los milisegundos desde 01/01/1970, podemos hacer esto:

var time = '12:23:00';
var seconds = new Date('1970-01-01T' + time + 'Z').getTime() / 1000;

Respuesta #5

Convertir la cadena hh:mm:ss a segundos en una sola línea. También se permite el formato h:m:s y mm:ss, m:s, etc.

'08:45:20'.split(':').reverse().reduce((prev, curr, i) => prev + curr*Math.pow(60, i), 0)

Respuesta #6

Esta es la solución más clara y fácil de entender:

function convertDurationtoSeconds(duration){
    const [hours, minutes, seconds] = duration.split(':');
    return Number(hours) * 60 * 60 + Number(minutes) * 60 + Number(seconds);
};

const input = '01:30:45';
const output = convertDurationtoSeconds(input);
console.log(`${input} is ${output} in seconds`);

Respuesta #7

intentar

time="12:12:12";
tt=time.split(":");
sec=tt[0]*3600+tt[1]*60+tt[2]*1;

Artículos relacionados