Flex me pousse CRAZY et je pense que c'est un truc bizarre avec la façon dont il gère les années bissextiles et aucune année bissextile. Alors, voici mon exemple. J'ai la méthode dateDiff ci-dessous qui trouve le nombre de jours ou de millisecondes entre deux dates. Si je lance les trois déclarations suivantes, j'ai des problèmes étranges.Bizarre flex date date
dateDiff("date", new Date(2010, 0,1), new Date(2010, 0, 31));
dateDiff("date", new Date(2010, 1,1), new Date(2010, 1, 28));
dateDiff("date", new Date(2010, 2,1), new Date(2010, 2, 31));
dateDiff("date", new Date(2010, 3,1), new Date(2010, 3, 30));
Si vous deviez regarder les comparaisons de date ci-dessus vous attendre à obtenir 30, 27, 30, 29 comme le nombre de jours entre les dates. Ce qui est bizarre, c'est que j'obtiens 29 en comparant le 1er mars au 31 mars. Pourquoi? Est-ce que cela a quelque chose à voir avec Février ayant seulement 28 jours? Si quelqu'un a des commentaires à ce sujet, cela serait grandement apprécié.
public static function dateDiff(datePart:String, startDate:Date, endDate:Date):Number
{
var _returnValue:Number = 0;
switch (datePart) {
case "milliseconds":
_returnValue = endDate.time - startDate.time;
break;
case "date":
// TODO: Need to figure out DST problem i.e. 23 hours at DST start, 25 at end.
// Math.floor causes rounding down error with DST start at dayOfYear
_returnValue = Math.floor(dateDiff("milliseconds", startDate, endDate)/(1000 * 60 * 60 * 24));
break;
}
return _returnValue;
}
C'est génial !! Merci beaucoup d'avoir posté l'exemple de code. Cela résout parfaitement mon problème. – CodeMonkey