I would use DateTimeOffset for this instead. DateTime
doesn't have any useful time zone information associated with it.
You can deserialize to DateTimeOffset
instead by changing serializer.DateParseHandling
:
JsonSerializer serializer = new JsonSerializer();
serializer.DateParseHandling = DateParseHandling.DateTimeOffset;
JObject data = serializer.Deserialize<JObject>(reader);
var offset = (DateTimeOffset)data["theTime"];
Console.WriteLine(offset.Offset); // -5:00:00
Console.WriteLine(offset.DateTime); // 11/20/2014 7:15:11 AM
Example: https://dotnetfiddle.net/I9UAuC