web-dev-qa-db-fra.com

Convertit la chaîne HH: MM: SS en secondes uniquement en javascript

J'ai des exigences similaires à celles-ci: Convertir l'heure en format HH: MM: SS en secondes seulement?

mais en javascript. J'ai vu de nombreux exemples de conversion de secondes en différents formats, mais pas de HH: MM: SS en secondes. Toute aide serait appréciée. 

63
Sri Reddy

Essaye ça:

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);
140
Dagg Nabbit

Cette fonction traite "HH: MM: SS" ainsi que "MM: SS" ou "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;
}
53
Niko

Cela peut être fait de manière assez résiliente avec ce qui suit:

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

En effet, chaque unité de temps comprise dans les heures, les minutes et les secondes est un multiple de 60 supérieur à celui de la plus petite unité. Le temps est scindé en heures minutes minutes et secondes, puis réduit en secondes en utilisant la valeur cumulée des unités les plus élevées multipliée par 60 à chaque passage.

Le +time est utilisé pour convertir l'heure en un nombre.

Cela finit par faire: (60 * ((60 * HHHH) + MM)) + SS

24
Paul

Convertit la chaîne hh:mm:ss en secondes sur une ligne. Aussi autorisé h:m:s format et mm:ss, m:s etc

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

essayer

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

Depuis que la fonction getTime de l'objet Date reçoit les millisecondes depuis le 1970/01/01, nous pouvons le faire: 

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

La méthode statique de Javascript Date.UTC() fait le tour suivant:

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

Sortie: 1499755980000 (en milliseconde) (1499755980000/1000) (en seconde)

Remarque: cette sortie calcule le diff du 1970-01-01 12: 0: 0 à maintenant et nous devons implémenter le moment.js

2
ITsDEv

Cette fonction fonctionne aussi pour 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])
        }
      }

1
Philip Tran

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>

0
Phillip Senn

Vous pouvez le faire de manière dynamique, au cas où vous rencontriez non seulement: HH: mm: ss, mais aussi mm: ss, ou même ss seul.

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