当我尝试使用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
答案 0 :(得分:2)
信息不会丢失。如果您检查current.Value
的内容,则会看到Kind
属性的区别。
对于第一个值类型为UTC
,对于第二个值类型为Local
。如果影响日期将如何转换为字符串。
您可以使用ToUniversalTime
或ToLocalTime
函数来在UTC和本地之间转换DateTime。尝试以下示例以查看区别:
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 + " - " + ((DateTime)current.Value).ToLocalTime().ToString());
Console.WriteLine(current.Key + " - " + ((DateTime)current.Value).ToUniversalTime().ToString());
}