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
DD
enHH: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|| 0
al 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:mm
no tengoseconds
en 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
+time
utiliza para convertir la hora en un número.Básicamente termina haciendo:
(60 * ((60 * HHHH) + MM)) + SS
Si 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:ss
cadena en segundos en una línea. También se permiteh:m:s
formato ymm:ss
,m:s
etc.fuente
hh:mm:ss
cadena en segundos en una línea. También se permite elh:m:s
formato ymm:ss
,m:s
etc.reverse()
: '00: 01: 11'.split (':'). Reduce ((val, entry, i) => val + entry * (3600 / Math.pow (60, i)), 0 ) === 71mm:ss
que 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