2009-03-27 8 views

risposta

17
import com.adobe.utils.DateUtil; 

var dateString:String = "2009-03-27T16:28:22.540-04:00"; 
var d:Date = DateUtil.parseW3CDTF(dateString); 
trace(d); 
var s:String = DateUtil.toW3CDTF(d); 
trace(s); 
 
[trace] Fri Mar 27 16:28:22 GMT-0400 2009 
[trace] 2009-03-27T20:28:22-00:00 

Risulta DateUtil gestisce tutto nel W3C Date and Time spec. Le date AS3 non mantengono i millisecondi, ma verranno eliminate solo se disponibili.

Si noti che l'uscita W3C viene convertita in UTC (ovvero GMT o tempo Zulu).

+1

È un vero peccato che questa soluzione funziona solo con Flex a causa dei pacchetti necessari di mx.formatters.Quindi, se stai usando Flash sei sfortunato. – Luke

+4

Per usarlo senza Flex, puoi copiare quel metodo fuori da DateUtil.as in as3corelib e incollalo nella tua classe: http://code.google.com/p/as3corelib/source/browse/trunk/src/com/adobe/utils/DateUtil.as –

0

Ecco un'implementazione: http://blog.flexexamples.com/2008/02/02/parsing-iso-dates-with-flex-and-actionscript/

(ff spiacenti solo non sta mostrando il pulsante che collega e sono troppo pigro per farlo io stesso.)

+0

Date.parse() non funziona con i formati ISO. Restituirà null. – Chadwick

+0

Il secondo collegamento al blog flexexamples è più vicino, anche se non gestisce nulla tranne UTC (e solo se specificato con una "Z" finale rispetto a un offset del fuso orario.Grazie per l'aiuto però! – Chadwick

1

funzione Esempio per convertire ISO in formato di data

public function isoToDate(value:String):Date 
    { 
     var dateStr:String = value; 
     dateStr = dateStr.replace(/\-/g, "/"); 
     dateStr = dateStr.replace("T", " "); 
     dateStr = dateStr.replace("Z", " GMT-0000"); 

     return new Date(Date.parse(dateStr)); 
    }