You can use `JLink` (as already mentioned while I read JavaDoc). Searching StackOverflow brings up this highly voted answer

[Converting ISO8601-compliant String to java.util.Date](http://stackoverflow.com/a/2202300/1078614)

I don't know whether it covers the whole standard but this works out of the box. If this is not sufficient, you can use an equivalent piece of code written for [Joda Time](http://johannburkard.de/blog/programming/java/date-time-parsing-formatting-joda-time.html)

    Needs["JLink`"]
    
    ParseDateString[date_String] := JavaBlock[
      InstallJava[];
      LoadJavaClass["javax.xml.bind.DatatypeConverter", 
       StaticsVisible -> True];
      DateList[
       javax`xml`bind`DatatypeConverter`parseDateTime[date]@getTime[]@toString[]
      ]
    ]

This uses the `DataypeConverter` class which is available without in standard Java 6. It converts it into a standard date string which can then be used with `DateList`. 

    ParseDateString["2010-01-01T12:00:00Z"]
    
    (* {2010, 1, 1, 13, 0, 0.} *)