2009-11-16 5 views
0

J'ai une étiquette avec un format qui devrait être: "00:00:00".Simple JavaScript Timer: sous-chaîne ou datetime?

Cette minuterie doit être décomptée via JavaScript, lorsque la minuterie est 0, il devrait y avoir un "Ended" dans l'étiquette.

Alors, comment le faire avec moins de performance (par exemple: j'ai un site avec 50 timers, ils doivent être synchronisés).

Mon idée est de scinder cette sous-chaîne et de les -1, de vérifier si elle est -01, puis de décrémenter le nombre avant de le redéfinir sur 59.

Y a-t-il un moyen plus facile?

Répondre

1

Je voudrais aller avec datetime, et décrémenter la quantité de secondes. Ensuite, les minutes, heures, jours, mois, années seront fixés automatiquement. Il suffit ensuite d'avoir une fonction formatDate générale qui reçoit un datetime et qui sort votre "xx: xx: xx" ou "terminé" en fonction de cela.

Créer un nouvel objet datetime basé sur la date d'aujourd'hui:

var dt = new Date(); 

ensemble à une valeur spécifique (note ce mois est un ENUM, et commence par 0):

var dt = new Date(2009, 10, 16, 11, 50, 30); // yyyy, mm, dd, hh, mm, ss 

Diminution de un seconde:

dt.setSeconds(dt.getSeconds()-1); 

Vos convertisseurs:

function dateToString(dt) { 
    var h = dt.getHours(); 
    var m = dt.getMinutes(); 
    var s = dt.getSeconds(); 

    // ensure there are always at least two characters 
    h = ('0' + h).substring(h.toString().length - 2); 
    m = ('0' + m).substring(m.toString().length - 2); 
    s = ('0' + s).substring(s.toString().length - 2); 

    return h + ':' + m + ':' + s; 
} 

function stringToDate(s) { 
    var dateParts = s.split(':'); 
    var h = parseInt(dateParts[0], 10); 
    var m = parseInt(dateParts[1], 10); 
    var s = parseInt(dateParts[2], 10); 

    return new Date(2009, 0, 1, h, m, s); // if you're only using time, the date doesn't matter 
} 
+0

OK, mais puis-je facilement convertir une chaîne 00: 00: 00 en datetime et en dateime dans ce format? – Kovu

+0

voir ma modification pour deux fonctions d'utilité –