【发布时间】:2014-12-17 15:58:34
【问题描述】:
我在使用 Json.Net 6.0.3 反序列化日期时间时遇到问题(我可以在 6.0.6 上复制该问题)。代码在 Windows 8.1 上的 .Net 4.5 中运行,文化为 en-GB。
这说明了问题:
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
var d1 = new DateTimeOffset(2014, 12, 15, 18, 0, 0, TimeSpan.FromHours(1));
var obj = new {
time = d1
};
var json = JsonConvert.SerializeObject(obj, Formatting.Indented);
Console.WriteLine(json);
var jo = JObject.Parse(json);
Console.WriteLine(jo.Value<string>("time") + " // jo.Value<string>(\"time\")");
Console.WriteLine(jo["time"] + " // jo[\"time\"]");
输出:
{
"time": "2014-12-15T18:00:00+01:00"
}
12/15/2014 17:00:00 // jo.Value<string>("time")
15/12/2014 17:00:00 // jo["time"]
日期时间因访问 JObject 的方式而异 - 一种是 MM/DD/YYYY DD/MM/YYYY。这是为什么呢?
我不需要它们采用特定格式:问题在于格式会发生变化。我有很多遗留代码可以解析来自 Json.Net 的日期时间字符串。该代码还将在世界各地的不同计算机上运行,可能具有不同的文化。
有没有办法让 Json.Net 总是以相同的格式返回日期时间?
【问题讨论】:
标签: c# json date datetime json.net