Créer une minuterie d'incrémentation en Javascript [dupliquer]
-
21-12-2019 - |
Question
Problème
Je veux une minuterie qui acceptera les secondes, les minutes, les heures, les jours et commencera à incrémenter à partir de là, disons que l'utilisateur ouvre une page où l'heure récupérée du serveur est, par exemple, 2 hours 30 minutes 05 seconds
, maintenant le minuteur javascript va commencer à s'incrémenter à partir de là pour qu'il 02:30:05
alors 02:30:06 .. 02:31:00
et ainsi de suite..dès que les secondes atteignent 60 minutes sont incrémentées
Ce que j'ai essayé
J'ai implémenté la même chose en utilisant moment.js
var duration = moment.duration({
'seconds': 30,
'hour': 2,
'minutes': 10
});
var interval = 1;
setInterval(function () {
duration = moment.duration(duration.asSeconds() + interval, 'seconds');
//.asSeconds()
$('.countdown').text(Math.round(duration.asHours()) + 'h:' + Math.round(duration.asMinutes()) + 'm:' + Math.round(duration.asSeconds()) + 's'); //.seconds()
$('.countdown1').text(duration.days() + 'd:' + duration.hours() + 'h:' + duration.minutes() + 'm:' + duration.seconds() + 's');
}, 1000);
Exigence
Je veux savoir comment je peux l'implémenter en utilisant javascript/jquery si possible, sinon j'utiliserai moment.js
un, j'ai regardé autour de moi mais tous ont un compte à rebours créé à partir de la date, donc l'entrée sera seconds, minutes, hours, days
et le compteur partira de là par incréments
La solution
Vous pouvez essayer quelque chose d'aussi simple que ceci :
var input = {year: 0, month: 0, day: 0, hours: 2, minutes: 10, seconds: 30};
var timestamp = new Date(input.year, input.month, input.day,
input.hours, input.minutes, input.seconds);
var interval = 1;
setInterval(function () {
timestamp = new Date(timestamp.getTime() + interval * 1000);
$('.countdown2').text(timestamp.getDay()+'d:'+timestamp.getHours()+'h:'+
timestamp.getMinutes()+'m:'+timestamp.getSeconds()+'s');
}, Math.abs(interval) * 1000);
À chaque intervalle, vous incrémentez la valeur temporelle d'un objet Date, puis relisez les heures/minutes/secondes et laissez l'implémentation native de Date se soucier de la conversion des secondes brutes.L'intervalle peut être positif ou négatif et aussi grand que vous le souhaitez.