我有一个JSON文件,我已将其反序列化为我创建的名为MyType
的类JsonConvert.DeserializeObject<MyType>(json);
其中一个JSON属性是Time,以UTC表示。 我把这个UTC时间转换成DATETIME对象
DateTime timestamp = DateTime.ParseExact(
JsonTime, "o", CultureInfo.InvariantCulture, DateTimeStyles.RoundtripKind);
当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");
JToken.Parse如何正确转换此UTC时间以及如何在JsonConvert.DeserializeObject<MyType>(json);
中使用它?
我试着设置这个
public static JsonSerializerSettings JsonSerializerSettings1
{
get
{
return new JsonSerializerSettings { DateParseHandling = DateParseHandling.DateTime};
}
}
.......
return JsonConvert.DeserializeObject<MyType>(json, JsonSerializerSettings1);
在反序列化期间,它仍然不会将UTC转换为日期时间
答案 0 :(得分:8)
您是否尝试将DateFormatHandling
设为IsoDateFormat
而将DateTimeZoneHandling
设为Utc
?
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; }
}