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);

JSfiddle

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

Était-ce utile?

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.

Démo

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top