private static JsonSerializerSettings setting = new JsonSerializerSettings { DateTimeZoneHandling = DateTimeZoneHandling.Utc };
public static void Main()
TestDate(new DateTime(2017, 1, 8, 13, 3, 4, 5), "1");
TestDate(new DateTime(2017, 1, 8, 13, 3, 4, 5, DateTimeKind.Utc), "2");
TestDate(DateTime.MinValue, "3");
private static void TestDate(DateTime d, string m)
Console.WriteLine(m + ") Original: " + d + " Kind: " + d.Kind);
var serialized = JsonConvert.SerializeObject(d, setting);
Console.WriteLine(m + ") Serialized: " + serialized);
var deserialized = JsonConvert.DeserializeObject<DateTime>(serialized, setting);
Console.WriteLine(m + ") Deserialized: " + deserialized + " Kind: " + deserialized.Kind);
var local = deserialized.ToLocalTime();
Console.WriteLine(m + ") Local: " + local + " Kind: " + local.Kind);