我有一个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转换为日期时间
你有没有尝试设置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; }
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2838 次 |
| 最近记录: |