【发布时间】:2019-06-20 16:24:11
【问题描述】:
当我尝试使用 JObject (Newtonsoft) 时,我丢失了一些 zulu 日期格式的数据
var s = "{ \"DateTimeZulu\": \"2019-06-12T08:50:20.626Z\", \"DateTimeUtc\": \"2019-06-12T08:50:20.626+00:00\" }";
var jsonEntity = (JObject.Parse(s));
foreach (KeyValuePair<string, JToken> current in jsonEntity)
{
Console.WriteLine(current.Key + " - " + current.Value.ToString());
}
实际输出:
DateTimeZulu - 12/06/2019 08:50:20
DateTimeUtc - 12/06/2019 10:50:20
预期输出:
DateTimeZulu - 12/06/2019 10:50:20
DateTimeUtc - 12/06/2019 10:50:20
【问题讨论】:
-
您可以强制 Json.Net 使用 DateTimeOffset 而不是保留时区的 DateTime,因为 DateTime 没有时区的概念。您可以使用
JsonConvert.DeserializeObject<JObject>(s, new JsonSerializerSettings { DateParseHandling = DateParseHandling.DateTimeOffset })来执行此操作。这将为两者正确生成12/06/2019 08:50:20(而不是12/06/2019 10:50:20)。
标签: c# json.net datetime-format utc