Running these two tests:
JsConfig.DateHandler = JsonDateHandler.ISO8601;
const string json = @"2006-07-05T12:00:00.000+0000";
// This works ..
var dateTimeOffset = JsonSerializer.DeserializeFromString<DateTimeOffset>(json);
// This throws an exception ..
var dateTime = JsonSerializer.DeserializeFromString<DateTime>(json);
Exception Details: The string '2006-07-05T12:00:00.000+0000' is not a valid AllXsd value.
Stack Trace:
at System.Xml.Schema.XsdDateTime..ctor(String text, XsdDateTimeFlags kinds)
at System.Xml.XmlConvert.ToDateTime(String s, XmlDateTimeSerializationMode dateTimeOption)
at ServiceStack.Text.Common.DateTimeSerializer.ParseShortestXsdDateTime(String dateTimeStr) in C:\src\ServiceStack.Text\src\ServiceStack.Text\Common\DateTimeSerializer.cs:line 60
at ServiceStack.Text.Common.DeserializeBuiltin`1.<GetParseFn>b__b(String value) in C:\src\ServiceStack.Text\src\ServiceStack.Text\Common\DeserializeBuiltin.cs:line 58
at ServiceStack.Text.Common.JsReader`1.<>c__DisplayClass7`1.<GetParseFn>b__2(String value) in C:\src\ServiceStack.Text\src\ServiceStack.Text\Common\JsReader.cs:line 41
at ServiceStack.Text.Json.JsonReader`1.Parse(String value) in C:\src\ServiceStack.Text\src\ServiceStack.Text\Json\JsonReader.Generic.cs:line 82
at ServiceStack.Text.JsonSerializer.DeserializeFromString[T](String value) in C:\src\ServiceStack.Text\src\ServiceStack.Text\JsonSerializer.cs:line 33
Interestingly, changing the json to this:
const string json = @"2006-07-05T12:00:00.000+00:00";
works ok - the difference (albeit subtle), is the colon in the time offset portion.
Smells like a bug - can anyone else confirm?