Converti stringa HH: MM: SS in secondi solo in javascript

Sto avendo requisiti simili come questo: Convertire il tempo in HH: MM: formato SS in secondi solo?

ma in javascript. Ho visto molti esempi di conversione di secondi in formati diversi ma non HH: MM: SS in secondi. Qualsiasi aiuto sarebbe apprezzato.

Prova questo:

 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); 

Questa funzione gestisce “HH: MM: SS” e “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; } 

Questo può essere fatto abbastanza resiliente con il seguente:

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

Questo perché ogni unità di tempo nelle ore, minuti e secondi è un multiplo di 60 maggiore dell’unità più piccola. Il tempo viene suddiviso in minuti di ore e componenti di secondi, quindi ridotti a secondi usando il valore accumulato delle unità più alte moltiplicato per 60 mentre attraversa ciascuna unità.

Il +time è usato per passare il tempo a un numero.

Fondamentalmente finisce per fare: (60 * ((60 * HHHH) + MM)) + SS

Converti hh:mm:ss stringa in secondi su una riga. Sono ammessi anche h:m:s formati h:m:s e mm:ss , m:s ecc

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

Poiché la funzione getTime dell’object Date riceve i millisecondi dal 1970/01/01, possiamo fare questo:

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

provare

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

Il metodo statico di Javascript Date.UTC() fa il trucco:

 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; } 
 new Date(moment('23:04:33', "HH:mm")).getTime() 

Uscita: 1499755980000 (in millisecondi) (1499755980000/1000) (in secondi)

Nota: questa uscita calcola diff dal 1970-01-01 12: 0: 0 ad ora e dobbiamo implementare il momento.js

 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') + '
') $('body').append(parsehhmmsst('1:00:00 AM') + '
') $('body').append(parsehhmmsst('2:00:00 AM') + '
') $('body').append(parsehhmmsst('3:00:00 AM') + '
') $('body').append(parsehhmmsst('4:00:00 AM') + '
') $('body').append(parsehhmmsst('5:00:00 AM') + '
') $('body').append(parsehhmmsst('6:00:00 AM') + '
') $('body').append(parsehhmmsst('7:00:00 AM') + '
') $('body').append(parsehhmmsst('8:00:00 AM') + '
') $('body').append(parsehhmmsst('9:00:00 AM') + '
') $('body').append(parsehhmmsst('10:00:00 AM') + '
') $('body').append(parsehhmmsst('11:00:00 AM') + '
') $('body').append(parsehhmmsst('12:00:00 PM') + '
') $('body').append(parsehhmmsst('1:00:00 PM') + '
') $('body').append(parsehhmmsst('2:00:00 PM') + '
') $('body').append(parsehhmmsst('3:00:00 PM') + '
') $('body').append(parsehhmmsst('4:00:00 PM') + '
') $('body').append(parsehhmmsst('5:00:00 PM') + '
') $('body').append(parsehhmmsst('6:00:00 PM') + '
') $('body').append(parsehhmmsst('7:00:00 PM') + '
') $('body').append(parsehhmmsst('8:00:00 PM') + '
') $('body').append(parsehhmmsst('9:00:00 PM') + '
') $('body').append(parsehhmmsst('10:00:00 PM') + '
') $('body').append(parsehhmmsst('11:00:00 PM') + '
')
  

Puoi farlo dynamicmente – nel caso in cui incontri non solo: HH: mm: ss, ma anche, mm: ss, o anche ss da 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); 

Questa funzione funziona anche per 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]) } }