json字符串中的日期时间将转换为localtime

时间:2016-07-15 12:33:33

标签: c# json json.net

为什么在将json字符串转换为Jobject时,datetime + offset将转换为localtime + offset。

这是代码。

string dataValue = @"{""Time"":""2016-07-15T20:03:41+08:00""}";
JObject json = JObject.Parse(dataValue);
Console.Write(json.ToString());

输出:

{
  "Time": "2016-07-15T17:33:41+05:30"
}

预期产出:

{
  "Time": "2016-07-15T20:03:41+08:00"
}

1 个答案:

答案 0 :(得分:3)

默认情况下,它将使用本地时间,但您可以覆盖默认设置:

var dataValue = @"{""Time"":""2016-07-15T20:03:41+08:00""}";

var jsonSerializerSettings = new JsonSerializerSettings
{
    DateTimeZoneHandling = DateTimeZoneHandling.Utc
};

var json = JsonConvert.DeserializeObject<JObject>(dataValue, jsonSerializerSettings);

如果您不关心转换为 DateTime 类型的日期,您可以告诉 Json.NET 忽略日期并将值解析为<强>字符串

var dataValue = @"{""Time"":""2016-07-15T20:03:41+08:00""}";

var jsonSerializerSettings = new JsonSerializerSettings
{
    DateParseHandling = DateParseHandling.None
};

var json = JsonConvert.DeserializeObject<JObject>(dataValue, jsonSerializerSettings)

以这种方式,它将完全按照你的意思保留。