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.
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);
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;
}
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
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)
essayer
time="12:12:12";
tt=time.split(":");
sec=tt[0]*3600+tt[1]*60+tt[2]*1;
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;
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;
}
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
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])
}
}
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>
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);