Why does Json.NET DeserializeObject change the timezone to local time?

c#, datetimeoffset, json.net

Solution

It seems to be ignoring `DateParseHandling.DateTimeOffset` and is using `DateParseHandling.DateTime`. I would log an issue here: https://github.com/JamesNK/Newtonsoft.Json

Problem

I'm using json.net to deserialize a `DateTimeOffset`, but it is ignoring the specified timezone and converting the datetime to the local offset. For example, given ``` var content = @"{""startDateTime"":""2012-07-19T14:30:00+09:30""}"; ``` When deserialised using: ``` var jsonSerializerSettings = new JsonSerializerSettings() { DateFormatHandling = DateFormatHandling.IsoDateFormat, DateParseHandling = DateParseHandling.DateTimeOffset, DateTimeZoneHandling = DateTimeZoneHandling.RoundtripKind }; var obj = JsonConvert.DeserializeObject(content, jsonSerializerSettings); ``` The obj will contain a property containing a `DateTimeOffset` but the value will be `2012-07-19T15:30:00+10:30` i.e. converted to the local timezone instead of preserving the original timezone. Is there a way to get the value to be parsed as expected so that the resulting `DateTimeOffset` property will match the supplied value?

Original source