2009-03-27 19 views

Respuesta

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 

Resulta que DateUtil maneja todo en el W3C Date and Time spec. Las fechas AS3 no mantienen milisegundos, pero solo se descartarán si están disponibles.

Tenga en cuenta que la salida W3C se convierte a UTC (también conocida como GMT o Zulu).

+1

Es una verdadera lástima que Esta solución solo funciona con Flex debido a los paquetes necesarios de mx.formatters. Por lo tanto, si está utilizando Flash no tiene suerte. – Luke

+4

Para usarlo sin Flex, puede copiar ese método fuera de DateUtil.as en as3corelib y pégalo en tu propia clase: http://code.google.com/p/as3corelib/source/browse/trunk/src/com/adobe/utils/DateUtil.as –

0

Aquí es una implementación: http://blog.flexexamples.com/2008/02/02/parsing-iso-dates-with-flex-and-actionscript/

(ff siento solo no se muestra el botón de enlace y soy demasiado perezoso para hacerlo yo mismo.)

+0

Date.parse() no funciona con los formatos ISO. Devolverá nulo. – Chadwick

+0

El segundo enlace al blog flexexamples está más cerca, aunque no maneja nada más que UTC (y solo si se especifica con una "Z" final en comparación con un desplazamiento de zona horaria. ¡Gracias por ayudar a ver! – Chadwick

1

Ejemplo función para convertir a formato ISO Fecha

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)); 
    } 
Cuestiones relacionadas