 <p>For us, the crux of this issue is that <code>DateTimeStyles.RoundtripKind</code> only works if your <code>DateTime</code> properties set the <code>DateTime.DateTimeKind</code> (<em>other than <code>DateTimeKind.Unspecified</code> - the default</em>) or better yet - using <code>DateTimeOffset</code> which <a href="https://msdn.microsoft.com/en-us/library/bb384267%28v=vs.110%29.aspx" rel="nofollow">enforces use of the <strong>TimeZone</strong> specificity</a>. </p> <p>Since we already had <code>DateTime</code> class properties, we worked around this for now by assigning the <a href="https://github.com/JamesNK/Newtonsoft.Json/blob/master/Src/Newtonsoft.Json/JsonSerializerSettings.cs" rel="nofollow"><code>JsonSerializerSettings.DateTimeZoneHandling</code></a> from <code>DateTimeZoneHandling.RoundtripKind</code> (<em>DateTime default</em>) to <code>DateTimeZoneHandling.Utc</code> in our <code>Global.asax.cs</code>. This change essentially appends the "Z" to the end of the <code>DateTime</code> - however there is one more step to convert the Local time to UTC. </p> <p>The second step is to provide the offset by assigning <a href="https://github.com/JamesNK/Newtonsoft.Json/blob/master/Src/Newtonsoft.Json/Converters/IsoDateTimeConverter.cs" rel="nofollow"><code>IsoDateTimeConverter.DateTimeStyles</code></a> which JSON.NET <a href="https://github.com/JamesNK/Newtonsoft.Json/blob/master/Src/Newtonsoft.Json/JsonSerializer.cs" rel="nofollow"><code>JsonSerializer</code></a> will pickup from a <code>SerializerSettings.Converters</code> and automatically convert from Local time to UTC - much like the out-of-the-box ASP.NET MVC does. </p> <p>Obviously - there are other options, but this is solution worked for us.</p> <h3>Global.asax.cs</h3> <pre class="lang-cs prettyprint-override"><code>protected void Application_Start() { GlobalConfiguration.Configuration.Formatters.JsonFormatter.SerializerSettings.DateTimeZoneHandling = Newtonsoft.Json.DateTimeZoneHandling.Utc; GlobalConfiguration.Configuration.Formatters.JsonFormatter.SerializerSettings.Converters.Add(new IsoDateTimeConverter() { DateTimeStyles = DateTimeStyles.AdjustToUniversal }); } </code></pre> <p>The <a href="https://books.google.com/books?id=EvXX03I5iLYC&amp;pg=PA239&amp;lpg=PA239&amp;dq=AdjustToUniversal%20vs%20roundtripkind&amp;source=bl&amp;ots=jGdh-zuPs0&amp;sig=cfLgFIOjxlSYkFbTlQyMikhLzW4&amp;hl=en&amp;sa=X&amp;ei=13PnVMg8z5HIBJi8gcAK&amp;ved=0CEIQ6AEwBg#v=snippet&amp;q=roundtripkind&amp;f=false" rel="nofollow">reason this works is because <code>RoundtripKind</code> honors DateTime's <code>DateTimeKind</code></a> - which is <code>Unspecified</code> by default. We want to explicitly convert this to UTC - which <code>JavaScriptSerializer</code> used to do for us out of the box for ASP.NET MVC. The <a href="https://books.google.com/books?id=EvXX03I5iLYC&amp;pg=PA239&amp;lpg=PA239&amp;dq=AdjustToUniversal%20vs%20roundtripkind&amp;source=bl&amp;ots=jGdh-zuPs0&amp;sig=cfLgFIOjxlSYkFbTlQyMikhLzW4&amp;hl=en&amp;sa=X&amp;ei=13PnVMg8z5HIBJi8gcAK&amp;ved=0CEIQ6AEwBg#v=snippet&amp;q=adjusttouniversal&amp;f=false" rel="nofollow">regional offset is provided</a> by <code>DateTimeStyles.AdjustToUniversal</code> which converts your Local <code>DateTime</code> to UTC.</p>