views:

924

answers:

2

I have a string "2009-10-08 08:22:02Z" which is iso8601 format. How do I use DateTime to parse this format ?

+3  A: 

No, it's not ISO 8601. Valid ISO 8601 representation would have T between time and date parts.

DateTime can natively handle valid ISO 8601 formats. However, if you're stuck with this particular representation, you can try DateTime.ParseExact and supply a fornat string.

Anton Gogolev
Cheers but the wiki shows both formats
Kaya
I was unable to parse my string using either "u" or "s" however replacing the T with a space is easily done. This seems to work. I'm using VB .NET with .NET 2.0.
sweeney
+2  A: 
        string txt= "2009-10-08 08:22:02Z";
        DateTime output = DateTime.ParseExact(txt, "u", System.Globalization.CultureInfo.InvariantCulture);

The DateTime class supports the standard format string of u for this format

I think for the ISO format (with the T separator), use "s" instead of "u". Or use:

        string txt= "2009-10-08 08:22:02Z";
        DateTime output = DateTime.ParseExact(txt, new string[] {"s", "u"}, System.Globalization.CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles.None);

to support both formats.

JDunkerley