2011-01-12 5 views
4

J'essaie de trouver le nombre de jours restant dans une année scolaire et de le retourner sous la forme d'une barre de progression jQuery UI.Récupère le pourcentage de temps écoulé entre deux dates javascript

Les barres de progression jQuery UI ne prennent que des pourcentages. Comment puis-je trouver le pourcentage de la distance entre les deux dates fournies, compte tenu de la date d'aujourd'hui?

Répondre

0

La façon la plus simple (algorithmiquement - vous pouvez trouver le code comme un exercice) est de:

  1. Déterminer le nombre de jours que vous avez dans l'année scolaire (en général ~ 185 pour la plupart des écoles publiques)
  2. Calculez le nombre de jours restants entre votre date actuelle et la fin des cours (assurez-vous d'ignorer les week-ends, jours fériés, jours de service, etc. car ceux-ci ne font pas partie des 185).
  3. Prenez la valeur de l'étape deux et divisez-le en premier. Cela vous donnera votre pourcentage.
  4. Afficher dans la barre de progression de l'interface utilisateur jQuery.
9

Exemple:http://jsfiddle.net/FLaJM/4/

var start = new Date(2005,0,1), 
    end = new Date(2021,0,1), 
    today = new Date(); 

alert(Math.round(100-((end - start) * 100)/today) + '%'); 

ou si vous voulez que le pourcentage restant:

Exemple:http://jsfiddle.net/FLaJM/3/

alert(Math.round(((end - start) * 100)/today) + '%'); 
+0

je besoin l'inverse: someDate = start.getTime() + ((end.getTime() - start.getTime()) * pourcentage). – GijsjanB

1

Si vous utilisez MomentJS, que je recommande fortement pour des trucs de date Javascript, vous pouvez le faire:

var percentOfDayRangeComplete = function(start, end) { 
    var now = moment(); 
    start = start || moment(now).startOf('day'); 
    end = end || moment(now).endOf('day'); 
    var totalMillisInRange = end.valueOf() - start.valueOf(); 
    var elapsedMillis = now.valueOf() - start.valueOf(); 
    // This will bound the number to 0 and 100 
    return Math.max(0, Math.min(100, 100 * (elapsedMillis/totalMillisInRange))); 
}; 

jsFiddle pour le voir en action ...

Questions connexes