J'ai utilisé une petite routine bien rangé que j'ai trouvé here pour calculer la différence en jours entre deux dates dans AS3. Je reçois des résultats étranges et je me demande si l'un d'entre vous, méga-seigneurs inter-codés, peut faire la lumière?Problème de trouver la différence en jours entre deux dates
Pourquoi le premier trimestre de 2010 approche-t-il d'un jour, alors que dans tous les autres cas, la routine fonctionne bien?
Un grand merci d'avance à tous ceux qui peuvent aider!
function countDays(startDate:Date, endDate:Date):int
{
var oneDay:int = 24*60*60*1000; // hours*minutes*seconds*milliseconds
var diffDays:int = Math.abs((startDate.getTime() - endDate.getTime())/(oneDay));
return diffDays;
}
countDays(new Date(2010, 00, 01), new Date(2011, 00, 01));
// returns 365, which is correct
countDays(new Date(2010, 00, 01), new Date(2010, 03, 01));
// returns 89, which is 1 day short
countDays(new Date(2010, 03, 01), new Date(2010, 06, 01));
// returns 91, which is correct
countDays(new Date(2010, 06, 01), new Date(2010, 09, 01));
// returns 92, which is correct
countDays(new Date(2010, 09, 01), new Date(2011, 00, 01));
// returns 92, which is correct
Ce qui est couplé avec la réponse d'uhleeka (heure d'été) est l'endroit où le problème est. Il y a 90 jours au premier trimestre, mais le 14 mars 2010 ne compte que 23 heures, donc la division par votre oneDay serait de 89,96 jours. Math.floor vous laisse tomber à 89 jours. –
Math.ceil ne fonctionnera pas au quatrième trimestre. En raison de DST, Q4 devrait avoir 92.04 jours, qui en utilisant Math.ceil vous donnerait 93 jours. – uhleeka
Uhleeka vous avez raison. Celui-ci fonctionne pour tous les cas cependant: Math.round (Math.abs (myExpression); – James