Comment puis-je convertir des secondes en une HH-MM-SS
chaîne en utilisant JavaScript?
javascript
date
time
date-format
time-format
Hannoun Yassir
la source
la source
Réponses:
Vous ne connaissez pas datejs ? c'est un must.
En utilisant datejs, écrivez simplement quelque chose comme:
--mettre à jour
De nos jours, date.js est obsolète et n'est pas maintenu, alors utilisez " Moment.js ", ce qui est beaucoup mieux comme l'a souligné TJ Crowder.
--mise à jour 2
Veuillez utiliser @ Frank's une solution à une ligne:
C'est de loin la meilleure solution.
la source
TypeError: Object [object Date] has no method 'clearTime'
.Vous pouvez réussir à le faire sans aucune bibliothèque JavaScript externe à l'aide de la méthode JavaScript Date, comme suit:
Ou, selon le commentaire de @Frank ; une doublure:
la source
new Date(SECONDS * 1000).toISOString().substr(11, 8);
Object doesn't support property or method 'toISOString'
Je ne pense pas qu'une fonctionnalité intégrée de l'objet Date standard le fasse pour vous d'une manière plus pratique que de faire les calculs vous-même.
Exemple:
Afficher l'extrait de code
la source
0.05
dans lahours
variable. Je l'ai mis à l'intérieur d'unparseInt
qui l'a fixé pour mon cas, mais je ne pense pas que ce serait exact pour tout. Pourtant, cela m'a aidé, alors merci!parseInt
, c'est pour analyser des chaînes , pas pour manipuler des nombres.Math.floor
serait l'opération pertinente ici.seconds = Math.floor(totalSeconds % 60);
. J'ai aussi obtenu un résultat décimal.totalSeconds % 60
ne peut avoir qu'une partie fractionnaire s'iltotalSeconds
a une partie fractionnaire. Que vous souhaitiez le plancher, cela dépendra de la perte ou de la conservation de ces informations. (Les autres opérations d'étage que nous effectuons ne perdent aucune information, car elles effacent simplement les données qui se retrouveront dansminutes
etseconds
.)console.log( hours +':'+ ('0'+minutes).slice(-2) +':'+ ('0'+seconds).slice(-2) );
Je sais que c'est un peu vieux, mais ...
ES2015:
Il produira:
la source
Comme Cleiton l'a souligné dans sa réponse , moment.js peut être utilisé pour cela:
la source
moment().startOf('year').seconds(30000000).format('DDD HH:mm:ss')
..format('YYYY DDD HH:mm:ss')
la source
Cela fait l'affaire:
(Provenant d' ici )
la source
nous pouvons rendre cette fonction beaucoup plus courte et nette mais cela diminue la lisibilité, nous l'écrirons donc aussi simple que possible et aussi stable que possible.
ou vous pouvez vérifier que cela fonctionne ici :
la source
Essaye ça:
la source
Voici une extension de la classe Number. toHHMMSS () convertit les secondes en une chaîne hh: mm: ss.
la source
Version facile à suivre pour les noobies:
la source
Cette fonction devrait le faire:
Sans passer de séparateur, il utilise
:
comme séparateur (par défaut):Si vous souhaitez utiliser
-
comme séparateur, passez-le simplement comme deuxième paramètre:Voir aussi ce violon .
la source
:
par défaut pour leseparator
paramètre, comme je l'ai déjà expliqué. Cela se fait par la déclarationtypeof separator !== 'undefined' ? separator : ':'
. De plus, votre fonction est à peu près identique à la mienne sauf quelques modifications cosmétiques et elles devraient toutes deux produire la même sortie ... sauf que ma version a un bien meilleur support du navigateur. Le vôtre ne fonctionnera dans AUCUNE version d'Internet Explorer ou de MS Edge <14.ci-dessous est le code donné qui convertira les secondes au format hh-mm-ss:
Obtenir une méthode alternative de Convertir les secondes au format HH-MM-SS en JavaScript
la source
Pour le cas particulier de HH: MM: SS.MS (eq: "00: 04: 33.637") tel qu'utilisé par FFMPEG pour spécifier les millisecondes .
Exemple d'utilisation, une minuterie de transport en millisecondes:
Exemple d'utilisation, lié à un élément multimédia
En dehors de la question, ces fonctions écrites en php:
la source
+ "." + p.getMilliseconds()
en utilisant simplementnew Date(p.getTime()-o.getTime()).toISOString().split("T")[1].split("Z")[0]
la source
Je voulais juste donner une petite explication à la belle réponse ci-dessus:
Sur la deuxième ligne, comme il y a 3600 secondes en 1 heure, nous divisons le nombre total de secondes par 3600 pour obtenir le nombre total d'heures. Nous utilisons parseInt pour supprimer toute décimale. Si totalSec était de 12600 (3 heures et demie), alors parseInt (totalSec / 3600) renverrait 3, car nous aurons 3 heures complètes. Pourquoi avons-nous besoin du% 24 dans ce cas? Si nous dépassons 24 heures, disons que nous avons 25 heures (90000 secondes), alors le modulo ici nous ramènera à 1, plutôt que de revenir à 25. Il limite le résultat dans une limite de 24 heures, car il y a 24 heures en un jour.
Lorsque vous voyez quelque chose comme ça:
Pensez-y comme ceci:
la source
Sonner sur ce vieux fil - l'OP a déclaré HH: MM: SS, et de nombreuses solutions fonctionnent, jusqu'à ce que vous réalisiez que vous avez besoin de plus de 24 heures répertoriées. Et peut-être que vous ne voulez pas plus d'une seule ligne de code. Voici:
Il renvoie H +: MM: SS. Pour l'utiliser, utilisez simplement:
... J'ai essayé de le faire utiliser le moins de code possible, pour une belle approche à une ligne.
la source
Avez-vous essayé d'ajouter des secondes à un objet Date?
Un exemple: https://jsfiddle.net/j5g2p0dc/5/
Mise à jour: un exemple de lien manquait, j'en ai créé un nouveau.
la source
addSeconds
sur un objet Date commeDate.prototype.addSeconds = function(seconds){...}
. Oui, cela fonctionne, merci pour la mise à jour.Voici une fonction pour convertir les secondes au format hh-mm-ss basé sur la réponse de powtac ici
jsfiddle
Exemple d'utilisation
la source
Après avoir regardé toutes les réponses et ne pas être satisfait de la plupart d'entre elles, voici ce que j'ai trouvé. Je sais que je suis très en retard pour la conversation, mais la voici quand même.
Je crée un nouvel objet Date, modifie l'heure à mes paramètres, convertis l'objet Date en une chaîne d'heure et supprime les éléments supplémentaires en divisant la chaîne et en ne renvoyant que la partie qui en a besoin.
J'ai pensé partager cette approche, car elle supprime le besoin d'acrobaties d'expression rationnelle, de logique et de mathématiques pour obtenir les résultats au format "HH: mm: ss", et à la place, elle s'appuie sur des méthodes intégrées.
Vous pouvez consulter la documentation ici: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date
la source
Il existe de nombreuses options pour résoudre ce problème, et il est évident qu'il existe une bonne option suggérée, mais je veux ajouter un code optimisé de plus ici
si vous ne voulez pas mettre en forme zéro avec moins de 10 nombres, vous pouvez utiliser
}
Exemple de code http://fiddly.org/1c476/1
la source
En une seule ligne, en utilisant la solution de TJ Crowder:
En une ligne, une autre solution qui compte également des jours:
Source: https://gist.github.com/martinbean/2bf88c446be8048814cf02b2641ba276
la source
la source
Vous pouvez également utiliser le code ci-dessous:
la source
new Date().toString().split(" ")[4];
résultat
15:08:03
la source
Pour toute personne utilisant AngularJS, une solution simple consiste à filtrer la valeur avec l' API date , qui convertit les millisecondes en une chaîne basée sur le format demandé. Exemple:
Notez que cela attend des millisecondes, vous pouvez donc vouloir multiplier timeRemaining par 1000 si vous effectuez une conversion à partir de secondes (comme la question d'origine a été formulée).
la source
Je suis tombé sur le cas que certains ont mentionné où le nombre de secondes est supérieur à un jour. Voici une version adaptée de la réponse la mieux notée de @Harish Anchu qui tient compte de périodes plus longues:
Exemple:
la source
Exemple d'utilisation
la source
Aucune des réponses ici ne répond à mes exigences car je veux pouvoir gérer
Bien que ceux-ci ne soient pas requis par l'OP, il est recommandé de couvrir les cas de bord, surtout quand cela prend peu d'effort.
Il est assez évident que l'OP signifie un NOMBRE de secondes quand il dit secondes . Pourquoi ancreriez-vous votre fonction
String
?la source
secondsToTimeSpan(8991)
renvoie6.00:05:51
alors que je pense qu'il devrait revenir00:02:29:51
J'ai déjà utilisé ce code pour créer un simple objet de durée:
la source