J'ai une exigence similaire à celle-ci: Convertir l'heure au 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.
javascript
time
Sri Reddy
la source
la source
DD
dansHH:MM:DD
?Réponses:
Essaye ça:
la source
String.prototype.toSeconds = function () { if (!this) return null; var hms = this.split(':'); return (+hms[0]) * 60 * 60 + (+hms[1]) * 60 + (+hms[2] || 0); }
REMARQUE: le|| 0
à la fin est bon pour toute implémentation de ce code - il évite les problèmes avec une représentation temporelle (toujours valide) de HH: MM (les entrées de type Chrome = "time" sortiront dans ce format lorsque secondes = 0).hh:mm
passeconds
dans ce cas ce que je dois modifier ..?var seconds = (+a[0]) * 60 * 60 + (+a[1]) * 60 + (+a[2]);
envar seconds = (+a[0]) * 60 * 60 + (+a[1]) * 60;
Cette fonction gère "HH: MM: SS" ainsi que "MM: SS" ou "SS".
la source
Cela peut être fait de manière assez résiliente avec les éléments suivants:
En effet, chaque unité de temps dans les heures, les minutes et les secondes est un multiple de 60 supérieur à l'unité plus petite. Le temps est divisé en composantes heure minutes et secondes, puis réduit en secondes en utilisant la valeur cumulée des unités supérieures multipliée par 60 au fur et à mesure qu'elle traverse chaque unité.
Le
+time
est utilisé pour convertir le temps en un nombre.Cela finit par faire:
(60 * ((60 * HHHH) + MM)) + SS
Si seulement quelques secondes sont passées, le résultat serait une chaîne, donc pour corriger le problème, nous pourrions convertir le résultat entier en un entier:
la source
HH:MM:SS
aussi bienMM:SS
que la réponse acceptée ne le fait pas.'03'.split(':').reduce((acc,time) => (60 * acc) + +time, 0);
échoue car renvoie une chaîne inattendue:'03'.split(':').reduce((acc,time) => (60 * acc) + +time);
Puisque la fonction getTime de l'objet Date obtient les millisecondes depuis le 01/01/1970, nous pouvons faire ceci:
la source
Convertit la
hh:mm:ss
chaîne en secondes sur une seule ligne.h:m:s
Format également autorisé etmm:ss
,m:s
etc.la source
hh:mm:ss
chaîne en secondes sur une seule ligne. Également autoriséh:m:s
format etmm:ss
,m:s
etc.reverse()
: '00: 01: 11'.split (':'). Reduction ((val, entry, i) => val + entry * (3600 / Math.pow (60, i)), 0 ) === 71mm:ss
cela ne fonctionnera pas correctement.essayer
la source
La méthode statique de Javascript
Date.UTC()
fait l'affaire:la source
Voici peut-être un formulaire un peu plus lisible sur la réponse originale approuvée.
la source
Sortie: 1499755980000 (en milliseconde) (1499755980000/1000) (en seconde)
Remarque: cette sortie calcule la différence entre 1970-01-01 12: 0: 0 et maintenant et nous devons implémenter moment.js
la source
Cette fonction fonctionne également pour MM: SS:
la source
Tiré de la solution donnée par Paul https://stackoverflow.com/a/45292588/1191101 mais en utilisant l'ancienne notation de fonction afin qu'elle puisse également être utilisée dans d'autres moteurs js (par exemple java Rhino)
ou juste celui-ci plus lisible
la source
la source
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.
la source