9
votes

Momentsjs et compte à rebours

J'ai trouvé la bibliothèque de moments qui est assez cool, mais je ne trouve pas que la documentation est très claire sur la manière de réaliser des tâches simples. J'essaie de construire un compte à rebours et je suppose que je devrais utiliser l'objet de durée, mais je ne comprends pas tout à fait comment (peut-être que l'anglais n'est pas ma langue maternelle). Quoi qu'il en soit, c'est ce que je veux: xxx

de sorte que chaqueeconde doit afficher:

02:00:00

01:59:59

01:59:58

01:59:57

...

00:00:00 Comment pourrais-je atteindre ce résultat avec la bibliothèque Momentsjs? Merci!


4 commentaires

Je ne connais pas la bibliothèque d'instructions, mais il semble que vous souhaitiez seinterval à la place.


Momentsjs fournit des méthodes pour obtenir des horaires et des dates, mais cela ne fait rien d'autre, il suffit de construire mon propre script pour soustraire 1 seconde chaque seconde et l'affiche de la fonction seinterval.


Oh merde, je reçois ce que tu dis maintenant. Correction de l'erreur.


github.com/icambron/moment-counddown Moment-Comptedown est un moment minuscule.js plugin que S'intègre au compte à rebours.js


4 Réponses :


1
votes

Je ne sais pas très bien les moments non plus, mais je pense que vous recherchez quelque chose comme ceci: xxx


0 commentaires

15
votes

Durée code> représente une période statique et n'augmente pas / diminue avec le flux de temps. Donc, si vous devez la réduire, vous devez le faire vous-même, par exemple créer une sorte de compteur de secondes ou de recréer de la durée code> à chaque fois. Voici le code de la deuxième option:

var time = 7200;
var duration = moment.duration(time * 1000, 'milliseconds');
var interval = 1000;

setInterval(function(){
  duration = moment.duration(duration.asMilliseconds() - interval, 'milliseconds');
  //show how many hours, minutes and seconds are left
  $('.countdown').text(moment(duration.asMilliseconds()).format('h:mm:ss'));
}, interval);


1 commentaires

+1 pour l'explication et la solution qui est exactement ce que je cherchais. Merci!



1
votes

https://github.com/jsmreese/moment-Duration-Format C'est un plugin au moment de la bibliothèque de date JavaScript pour ajouter un formatage complet à un instant Durations

<script type="application/javascript" src="/js/moment.js"></script>
<script type="application/javascript" src="/js/moment-duration-format.js"></script>

<script>

function startTimer(){

var duration = moment.duration({
    'hour': 2,
    'minutes': 0,
    'seconds': 0 
});

var interval = 1;

var timerID = -1; //hold the id

var timer = setInterval(function () {

    if(duration.asSeconds() <= 0){
        console.log("STOP!");
        console.log(duration.asSeconds());
        clearInterval(timerID);
    }
    else{

    duration = moment.duration(duration.asSeconds() - interval, 'seconds');

    $('.countdown').html( duration.format("hh:mm:ss", { trim: false }) );
    }

}, 1000);

timerID = timer;

return timer;
};

//start
myTimer = startTimer();    

//stop
//clearInterval(myTimer);

</script>


0 commentaires

1
votes

Voici ce que j'ai fait en 2019.

var time = 7200;
var duration = moment.duration(time, "seconds");
var interval = 1000;

setInterval(function(){
  duration.subtract(interval, "milliseconds"); //using momentjs substract function
  console.log(moment(duration.asMilliseconds()).format('hh:mm:ss')); 
}, interval );


0 commentaires