Сравнение дат ActionScript

В моем коде Actionscript у меня есть две даты:

var date1:Date = new Date(2011,1,1);
var date2:Date = new Date(2011,1,1);

Это не работает:

var equal:Boolean = date1 == date2;

Из чтения я обнаружил, что это рабочая альтернатива, поскольку она просто получает количество миллисекунд из стандартного момента времени.

var equal:Boolean = date1.getTime() == date2.getTime();

Итак, мои вопросы:

  1. Почему обычный оператор равенства не работает с датами в скрипте действий?
  2. Операторы ">" и "‹" работают нормально, но можно ли им доверять?
  3. Почему они будут работать, но не оператор равенства?
  4. Есть ли стандартный метод, который я могу использовать при сравнении дат, который просто возвращает -1, 0 или 1 (я понимаю, что могу легко создать свой собственный, но я бы предпочел использовать существующий служебный класс)?

Заранее спасибо.


person Ocelot20    schedule 20.01.2011    source источник


Ответы (2)


  1. Поскольку даты являются объектами (экземплярами класса), а не собственным типом данных, поэтому они всегда будут разными, если только это не разные ссылки на один и тот же экземпляр.
  2. Вероятно, потому, что при сравнении они преобразуются в исходный формат (число) (см. конверсии). Не уверен, что это число или строка? Обязательно протестируйте
  3. Потому что они не равны; это не один и тот же объект.
  4. Сравнение, которое вы сделали (используя getTime()), - это лучшее, что вы можете использовать, я думаю.
person zeh    schedule 21.01.2011

Re: #4

Вы можете использовать функцию ObjectUtil.dateCompare(), чтобы получить нужные результаты.

mx.utils.ObjectUtil.dateCompare()

person jss    schedule 20.01.2011
comment
Спасибо! Отметит это как ответ, если никто не ответит на остальные вопросы. - person Ocelot20; 21.01.2011