2011-01-20 2 views
8

В моем коде 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. Почему не нормальное равенство оператор работа на Даты в ActionScript?
  2. ">" а также "<" операторы, похоже, работают нормально, но можно ли им доверять?
  3. Зачем им работать, но не оператор равенства?
  4. Есть ли стандартный метод, который можно использовать при сравнении дат, которые только что возвращают -1, 0 или 1 (я понимаю, что могу легко создать свой собственный, но я бы предпочел использовать существующий класс утилит)?

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

ответ

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

Re: # 4

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

mx.utils.ObjectUtil.dateCompare()

+1

Спасибо! Отметьте это как ответ, если никто другой не ответит на остальные вопросы. – Ocelot20

Смежные вопросы