在JSON.net中解析UTC时间

use*_*383 2 json.net

我有一个JSON文件,我已将其反序列化为我创建的一个名为MyType的类

JsonConvert.DeserializeObject<MyType>(json);
Run Code Online (Sandbox Code Playgroud)

其中一个JSON属性是Time,以UTC表示.我将此UTC时间转换为DATETIME对象

DateTime timestamp = DateTime.ParseExact(
    JsonTime, "o", CultureInfo.InvariantCulture, DateTimeStyles.RoundtripKind);
Run Code Online (Sandbox Code Playgroud)

当UTC时间为:2014-06-25T00:30:07.9289078 + 00:00时,以上工作正常

但是请注意:2014-06-24T00:31:08.62124 + 00:00

我怀疑这很可能是因为在"+"之前缺少尾随的"0"

我正在玩JSON.net,并试图使用Jtoken.Parse方法,这似乎正在做我想要的.

var t = Newtonsoft.Json.Linq.JToken.Parse(
      @"{ ""x"": ""2014-06-24T00:31:08.62124+00:00"" }").Value<DateTime>("x");
Run Code Online (Sandbox Code Playgroud)

JToken.Parse如何正确转换此UTC时间以及如何使用它JsonConvert.DeserializeObject<MyType>(json);

我试着设置这个

public static JsonSerializerSettings JsonSerializerSettings1
{
  get
  {
     return new JsonSerializerSettings { DateParseHandling = DateParseHandling.DateTime};
  }
}
.......
return JsonConvert.DeserializeObject<MyType>(json, JsonSerializerSettings1);
Run Code Online (Sandbox Code Playgroud)

在反序列化期间,它仍然不会将UTC转换为日期时间

Bri*_*ers 8

你有没有尝试设置DateFormatHandlingIsoDateFormatDateTimeZoneHandlingUtc

class Program
{
    static void Main(string[] args)
    {
        string json = @"{ ""Date"": ""2014-06-24T00:31:08.62124+00:00"" }";

        JsonSerializerSettings settings = new JsonSerializerSettings
        {
            DateFormatHandling = DateFormatHandling.IsoDateFormat,
            DateTimeZoneHandling = DateTimeZoneHandling.Utc
        };

        MyType obj = JsonConvert.DeserializeObject<MyType>(json, settings);

        Console.WriteLine(obj.Date.ToString());
    }
}

class MyType
{
    public DateTime Date { get; set; }
}
Run Code Online (Sandbox Code Playgroud)