2011-01-20 15 views
8

Nel mio codice Actionscript ho due date:Actionscript Data Confronto

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

Questo non funziona:

var equal:Boolean = date1 == date2; 

dalla lettura ho scoperto che si tratta di un'alternativa di lavoro dal momento che solo ottiene il numero di millisecondi da un punto temporale standard.

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

Quindi le mie domande sono:

  1. Perché non funziona il normale uguaglianza all'operatore di lavorare sulle date in ActionScript?
  2. ">" e gli operatori "<" sembrano funzionare correttamente, ma possono essere considerati affidabili?
  3. Perché dovrebbero lavorare ma non l'operatore di uguaglianza?
  4. C'è un metodo standard che posso usare quando si confrontano date che restituiscono solo un -1, 0 o 1 (mi rendo conto che posso creare facilmente il mio, ma preferirei usare una classe di utilità esistente)?

Grazie in anticipo.

risposta

6
  1. perché le date sono oggetti (istanze di una classe), al posto di un tipo di dati nativo, quindi saranno sempre diverse, a meno che sia diversi riferimenti alla stessa istanza.
  2. Probabilmente, perché vengono trasformati in un formato nativo (numero) quando confrontati (vedere type conversions). Non sei sicuro se viene proiettato su un numero o una stringa? Assicurati di testare
  3. Perché non sono uguali; non sono lo stesso oggetto.
  4. Il confronto effettuato (utilizzando getTime()) è la cosa migliore che si possa usare.
15

Re: # 4

È possibile utilizzare la funzione ObjectUtil.dateCompare() per ottenere i risultati che stai cercando.

mx.utils.ObjectUtil.dateCompare()

+1

Grazie! La segnerà come risposta se nessun altro interverrà con la risposta al resto delle domande. – Ocelot20