views:

1537

answers:

2

How can I parse an ISO date string into a date object in Flex (AS3)?

e.g.
2009-12-08T04:23:23Z
2009-12-08T04:23:23.342-04:00
etc...

A: 

Here is an implementation: http://blog.flexexamples.com/2008/02/02/parsing-iso-dates-with-flex-and-actionscript/

(Sorry ff just isn't showing the linking button and I am too lazy to do it myself.)

dirkgently
Date.parse() does not work with ISO formats. It will return null.
Chadwick
The second link to the flexexamples blog is closer, though it doesn't handle anything but UTC (and only if specified with a trailing "Z" as opposed to a timezone offset. Thanks for helping look though!
Chadwick
+8  A: 
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

Turns out DateUtil handles everything in the W3C Date and Time spec. AS3 Dates do not maintain milliseconds, but they'll just be dropped if available.

Note that the W3C output is converted to UTC (aka GMT, or Zulu time).

Chadwick
It's a real shame that this solution only works with Flex because of the needed mx.formatters packages. So, if you're using Flash you're out of luck.
Luke