为什么在将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"
}
答案 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)
以这种方式,它将完全按照你的意思保留。