Existe-t-il un moyen d'utiliser la méthode moment.js format
sur des objets de durée? Je ne le trouve nulle part dans les documents et il ne semble pas être un attribut sur les objets de durée.
J'aimerais pouvoir faire quelque chose comme:
var diff = moment(end).unix() - moment(start).unix();
moment.duration(diff).format('hh:mm:ss')
De plus, s'il existe d'autres bibliothèques pouvant facilement accueillir ce type de fonctionnalité, je serais intéressé par les recommandations.
Merci!
javascript
momentjs
mvanveen
la source
la source
HH:mm:ss
donnera00:00:23
dans mon exemple précédent. donc juste le mauvais boîtier de la partie HeuresRéponses:
Nous envisageons d'ajouter une sorte de formatage aux durées dans moment.js. Voir https://github.com/timrwood/moment/issues/463
Quelques autres bibliothèques qui pourraient aider sont http://countdownjs.org/ et https://github.com/icambron/twix.js
la source
Jetez un œil au JSFiddle
la source
DDD HH:mm:ss.SSS
(oùDDD
est le jour de l'année) s'affiche1
quand je veux0
. Une solution rapide pour cela?convertir la durée en ms puis en moment:
la source
.format('HH:mm:ss')
. Voir les documentsUtilisez ce plugin Moment Duration Format .
Exemple:
la source
hh:mm:mm
et que je n'ai que 10 secondes, il s'affiche à la10
place de00:00:10
(même avec forcelength activé). standardisé.{ trim: false }
cela arrêtera ce comportement.const duration = moment.duration(value, 'seconds');
que je peux mettre en forme en utilisant:moment.utc(duration.as('milliseconds')).format('HH:mm:ss').toString();
Utilisez cette ligne de code:
la source
la source
Le meilleur scénario pour mon cas d'utilisation particulier était:
Cela améliore la réponse de @ Wilson car il n'accède pas à la propriété interne privée _data.
la source
Vous n'avez pas besoin de .format. Utilisez des durées comme celle-ci:
J'ai trouvé cette solution ici: https://github.com/moment/moment/issues/463
ÉDITER:
Et avec rembourrage pour les secondes, les minutes et les heures:
la source
duration = moment.duration(7200, 'seconds'); withPadding(duration);
diront "00:00".if (duration.asDays() > 0) { return 'at least one day';
- est-ce que je lis bien?J'utilise:
Et je reçois "09:30" dans var str.
la source
_data
est une propriété interne et peut changer sans avertissement.moment(moment.duration(1200000)._data).format('hh:mm:ss')
retournera à 12h20 au lieu de 00h20h
est compris entre 1 et 12, donc c'est plutôt prévisible. UtilisezH
plutôt docs - jetons d'heuremoment.utc(...).format("HH:mm");
si diff est un moment
la source
Si vous êtes prêt à utiliser une autre bibliothèque javascript, numeral.js peut formater les secondes comme suit (l'exemple est pour 1000 secondes):
la source
J'utilise la fonction de formatage classique dans ces cas:
Ceci est un hack car le différentiel horaire est traité comme une date standard, une date précoce, mais cela n'a pas d'importance pour notre objectif et vous n'avez pas besoin de plugin
la source
Si toutes les heures doivent être affichées (plus de 24) et si "0" avant les heures n'est pas nécessaire, le formatage peut être effectué avec une courte ligne de code:
la source
Basé sur la réponse de ni-ko-o-kin :
la source
Pour formater la durée du moment en chaîne
la source
si vous utilisez angulaire, ajoutez ceci à vos filtres:
exemple d'utilisation
la source
Ma solution qui n'implique aucune autre bibliothèque et qui fonctionne avec diff> 24h
la source
Et le javascript natif?
la source
Utiliser le format moment-durée .
Cadre client (ex: React)
Serveur (node.js)
la source
Tirages:
la source
la source
Vous pouvez utiliser numeral.js pour formater votre durée:
la source
Cela peut être utilisé pour obtenir les deux premiers caractères en heures et les deux derniers en minutes. La même logique peut être appliquée aux secondes.
la source
moment.duration(x).format()
est obsolète. Vous pouvez utilisermoment.utc(4366589).format("HH:mm:ss")
pour obtenir la réponse souhaitée.la source
Comment utiliser correctement les durées de moment.js? | Utilisez moment.duration () dans le code
Vous devez d'abord importer
moment
etmoment-duration-format
.Ensuite, utilisez la fonction de durée. Appliquons l'exemple ci-dessus: 28800 = 8 h.
EllEh bien, vous n'avez pas d'erreur de type ci-dessus. 🤔Avez-vous une bonne valeur à 8h00? Non…, la valeur que vous obtenez est de 8 h 00. Le format Moment.js ne fonctionne pas comme il est censé le faire.
💡La solution consiste à transformer les secondes en millisecondes et à utiliser le temps UTC.
Très bien, nous obtenons 8h00 maintenant. Si vous voulez 8 h au lieu de 8 h pour le temps intégral, nous devons faire RegExp
la source
J'avais besoin de le faire pour le travail comme une exigence pour afficher les heures dans ce format. Au début, j'ai essayé cela.
Cependant, plus de 24 heures et les heures sont remises à 0. Mais les minutes et les secondes étaient précises. J'ai donc utilisé uniquement cette partie pour les minutes et les secondes.
Maintenant, tout ce dont j'ai besoin est le nombre total d'heures.
Et pour obtenir ce format que nous voulons tous, il suffit de le coller ensemble.
si
totalMilliseconds
c'est894600000
cela reviendra249:30:00
.J'espère que cela a aidé. Laissez des questions dans les commentaires. ;)
la source
Si vous utilisez Angular> 2, j'ai créé un Pipe inspiré par @ hai-alaluf.
la source
Cela fonctionne pour moi:
la source