from - javascript timer countdown
Convierte cadena HH: MM: SS a segundos solo en javascript (11)
Tengo un requisito similar al siguiente: ¿ Convertir el tiempo en formato HH: MM: SS a segundos solamente?
pero en javascript He visto muchos ejemplos de convertir segundos en diferentes formatos pero no HH: MM: SS en segundos. Cualquier ayuda sería apreciada.
Convierta hh:mm:ss
string en segundos en una línea. También se permite h:m:s
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)
Dado que la función getTime del objeto Date obtiene los milisegundos desde 1970/01/01, podemos hacer esto:
var time = ''12:23:00'';
var seconds = new Date(''1970-01-01T'' + time + ''Z'').getTime() / 1000;
El método estático de Javascript Date.UTC()
hace el truco:
alert(getSeconds(''00:22:17''));
function getSeconds(time)
{
var ts = time.split('':'');
return Date.UTC(1970, 0, 1, ts[0], ts[1], ts[2]) / 1000;
}
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;
}
Esta función también funciona para MM: SS:
const convertTime = (hms) => {
if (hms.length <3){
return hms
} else if (hms.length <6){
const a = hms.split('':'')
return hms = (+a[0]) * 60 + (+a[1])
} else {
const a = hms.split('':'')
return hms = (+a[0]) * 60 * 60 + (+a[1]) * 60 + (+a[2])
}
}
Esto se puede hacer con bastante elasticidad 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 veces mayor que la unidad más pequeña. El tiempo se divide en minutos de hora y segundos, luego se reduce a segundos al usar el valor acumulado de las unidades más altas multiplicado por 60 a medida que atraviesa cada unidad.
El +time
se usa para asignar el tiempo a un número.
Básicamente termina haciendo: (60 * ((60 * HHHH) + MM)) + SS
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);
Puede hacerlo de forma dinámica, en caso de que encuentre no solo: HH: mm: ss, sino también, mm: ss, o incluso ss solo.
var str = ''12:99:07'';
var times = str.split(":");
times.reverse();
var x = times.length, y = 0, z;
for (var i = 0; i < x; i++) {
z = times[i] * Math.pow(60, i);
y += z;
}
console.log(y);
tratar
time="12:12:12";
tt=time.split(":");
sec=tt[0]*3600+tt[1]*60+tt[2]*1;
function parsehhmmsst(arg) {
var result = 0, arr = arg.split('':'')
if (arr[0] < 12) {
result = arr[0] * 3600 // hours
}
result += arr[1] * 60 // minutes
result += parseInt(arr[2]) // seconds
if (arg.indexOf(''P'') > -1) { // 8:00 PM > 8:00 AM
result += 43200
}
return result
}
$(''body'').append(parsehhmmsst(''12:00:00 AM'') + ''<br>'')
$(''body'').append(parsehhmmsst(''1:00:00 AM'') + ''<br>'')
$(''body'').append(parsehhmmsst(''2:00:00 AM'') + ''<br>'')
$(''body'').append(parsehhmmsst(''3:00:00 AM'') + ''<br>'')
$(''body'').append(parsehhmmsst(''4:00:00 AM'') + ''<br>'')
$(''body'').append(parsehhmmsst(''5:00:00 AM'') + ''<br>'')
$(''body'').append(parsehhmmsst(''6:00:00 AM'') + ''<br>'')
$(''body'').append(parsehhmmsst(''7:00:00 AM'') + ''<br>'')
$(''body'').append(parsehhmmsst(''8:00:00 AM'') + ''<br>'')
$(''body'').append(parsehhmmsst(''9:00:00 AM'') + ''<br>'')
$(''body'').append(parsehhmmsst(''10:00:00 AM'') + ''<br>'')
$(''body'').append(parsehhmmsst(''11:00:00 AM'') + ''<br>'')
$(''body'').append(parsehhmmsst(''12:00:00 PM'') + ''<br>'')
$(''body'').append(parsehhmmsst(''1:00:00 PM'') + ''<br>'')
$(''body'').append(parsehhmmsst(''2:00:00 PM'') + ''<br>'')
$(''body'').append(parsehhmmsst(''3:00:00 PM'') + ''<br>'')
$(''body'').append(parsehhmmsst(''4:00:00 PM'') + ''<br>'')
$(''body'').append(parsehhmmsst(''5:00:00 PM'') + ''<br>'')
$(''body'').append(parsehhmmsst(''6:00:00 PM'') + ''<br>'')
$(''body'').append(parsehhmmsst(''7:00:00 PM'') + ''<br>'')
$(''body'').append(parsehhmmsst(''8:00:00 PM'') + ''<br>'')
$(''body'').append(parsehhmmsst(''9:00:00 PM'') + ''<br>'')
$(''body'').append(parsehhmmsst(''10:00:00 PM'') + ''<br>'')
$(''body'').append(parsehhmmsst(''11:00:00 PM'') + ''<br>'')
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
new Date(moment(''23:04:33'', "HH:mm")).getTime()
Salida: 1499755980000 (en milisegundo) (1499755980000/1000) (en segundo lugar)
Nota: este resultado calcula la diferencia desde 1970-01-01 12: 0: 0 hasta ahora y tenemos que implementar el momento.js