Looks good. But there are some cases missing: We should support 0 to 4 millisecond digits, both with and without Z suffix. In your code for example `2014-03-11T08:01:02Z` would not be recognised.

Will update to your solution + all cases tonight. I also found a mistake in my test cases which I will resolve.