Tengo un requisito similar a este: ¿ Convertir la hora en formato HH: MM: SS a solo segundos?
pero en javascript. He visto muchos ejemplos de conversión de segundos en diferentes formatos, pero no HH: MM: SS en segundos. Cualquier ayuda sería apreciada.
javascript
time
Sri Reddy
fuente
fuente

DDenHH:MM:DD?Respuestas:
Prueba esto:
fuente
String.prototype.toSeconds = function () { if (!this) return null; var hms = this.split(':'); return (+hms[0]) * 60 * 60 + (+hms[1]) * 60 + (+hms[2] || 0); }NOTA: el|| 0al final es bueno para cualquier implementación de este código; evita problemas con una representación de tiempo (aún válida) de HH: MM (las entradas de tipo Chrome = "tiempo" se mostrarán en este formato cuando segundos = 0).hh:mmno tengosecondsen este caso lo que tengo que modificar ..?var seconds = (+a[0]) * 60 * 60 + (+a[1]) * 60 + (+a[2]);avar seconds = (+a[0]) * 60 * 60 + (+a[1]) * 60;Esta función maneja "HH: MM: SS" así como "MM: SS" o "SS".
fuente
Esto se puede hacer de manera bastante flexible con lo siguiente:
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, luego se reduce a segundos utilizando el valor acumulado de las unidades más altas multiplicado por 60 a medida que pasa por cada unidad.
los
+timeutiliza para convertir la hora en un número.Básicamente termina haciendo:
(60 * ((60 * HHHH) + MM)) + SSSi solo se pasan segundos, el resultado sería una cadena, por lo que, para solucionarlo, podríamos convertir todo el resultado en un int:
fuente
HH:MM:SS, así comoMM:SS, mientras que la respuesta aceptada no lo hace.'03'.split(':').reduce((acc,time) => (60 * acc) + +time, 0);falla porque devuelve una cadena inesperada:'03'.split(':').reduce((acc,time) => (60 * acc) + +time);Dado que la función getTime del objeto Date obtiene los milisegundos desde el 01/01/1970, podemos hacer esto:
fuente
Convierta la
hh:mm:sscadena en segundos en una línea. También se permiteh:m:sformato ymm:ss,m:setc.fuente
hh:mm:sscadena en segundos en una línea. También se permite elh:m:sformato ymm:ss,m:setc.reverse(): '00: 01: 11'.split (':'). Reduce ((val, entry, i) => val + entry * (3600 / Math.pow (60, i)), 0 ) === 71mm:ssque no funcione correctamente.tratar
fuente
El método estático de Javascript
Date.UTC()hace el truco:fuente
Aquí hay tal vez un formulario un poco más legible en la respuesta aprobada original.
fuente
Salida: 1499755980000 (en milisegundos) (1499755980000/1000) (en segundos)
Nota: esta salida calcula la diferencia desde 1970-01-01 12: 0: 0 hasta ahora y necesitamos implementar el moment.js
fuente
Esta función también funciona para MM: SS:
fuente
Tomado de la solución dada por Paul https://stackoverflow.com/a/45292588/1191101 pero usando la notación de función anterior para que también se pueda usar en otros motores js (por ejemplo, java Rhino)
o solo este más legible
fuente
fuente
Puede hacer esto de forma dinámica, en caso de que no solo encuentre: HH: mm: ss, sino también mm: ss, o incluso ss solo.
fuente