jQuery Décalage horaire

Salut fait un calcul de temps dans jQuery. Pensez-vous que j’utilise le meilleur moyen?

Departure Time Arrival Time Difference
function hour2mins(timestr) { var spltd = timestr.split(":"); if (spltd.length == 2) { return parseInt(parseInt(spltd[0] * 60) + parseInt(spltd[1])); } else { return false; } } function mins2hour(instr) { var hourstr = parseInt(instr / 60); if (hourstr.toSsortingng().length == 1) { hourstr = "0" + (hourstr + ''); } var minstr = parseInt(instr % 60); if (minstr.toSsortingng().length == 1) { minstr = "0" + (minstr + ''); } return hourstr + ':' + minstr; } function tdiff(t1, t2) { var t1 = hour2mins(t1); var t2 = hour2mins(t2); var ret = mins2hour(parseInt(t2 - t1)); if (t2 < t1) { ret = mins2hour(parseInt(parseInt(t2 + 1440) - t1)); } return ret; } $(function() { $("input.std1").keyup(function(b) { $("#duration").val(tdiff($("#departure").val(), $("#arrival").val())); }); });

lien: http://jsfiddle.net/xmQD7/1/

Votre code ne fonctionnera pas pour l’entrée suivante: “07:09”, “07:07”. Le problème vient de votre déclaration parseInt.

Vous devez toujours indiquer 10 comme deuxième paramètre, afin qu’il soit analysé comme une valeur décimale.

  return parseInt(parseInt(spltd[0] * 60, 10) + parseInt(spltd[1], 10)); 

De plus, vous n’avez pas besoin de boucler l’ajout de deux entiers analysés dans un parseInt, de sorte que ce serait juste

  return parseInt(spltd[0] * 60, 10) + parseInt(spltd[1], 10); 

En mins2hour, vous n’avez pas besoin d’parsingrInt ici:

 var hourstr = parseInt(instr / 60); 

et ici:

 var minstr = parseInt(instr % 60); 

Je suppose que vous vouliez une chaîne comme ce point (comme votre nom le suggère), donc cela aurait dû être

 var hourstr = "" + (instr / 60); var minstr = "" + (instr % 60); 

Il y a quelques autres utilisations inutiles de parseInt dans votre code. Je vous suggère de lire la documentation sur parseInt – https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/parseInt