Flex водит меня CRAZY, и я думаю, что это странная добыча с тем, как она обрабатывает високосные годы и ни один високосный год. Итак, вот мой пример. У меня есть следующий метод dateDiff, который находит количество дней или миллисекунд между двумя датами. Если я запустил следующие три заявления, я получу некоторые странные проблемы.Weird flex date issue
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));
Если бы вы были смотреть на даты сравнений выше можно было бы ожидать, чтобы получить 30, 27, 30, 29, как количество дней между датами. Там странно то, что я получаю 29 при сравнении с 1 марта по 31 марта. Почему? Это что-то делать с февралем, имея только 28 дней? Если у кого-то есть ЛЮБОЙ вклад в это, что было бы весьма признательно.
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;
}
Это потрясающе !! Большое спасибо за отправку кода. Это прекрасно исправляет мою проблему. – CodeMonkey