如果我有一个 JSON 字符串,其属性看起来像 UTC 日期,例如:“ 2017-08-25T16:49:27.777-07:00 ”,Json.NET 的 JArray.Parse 会将日期修改为另一个时区。有办法禁用这个吗?我希望日期保持原样。我尝试将其放在解析之前
JsonConvert.DefaultSettings = () => new JsonSerializerSettings
{
DateParseHandling = DateParseHandling.None
};
Run Code Online (Sandbox Code Playgroud)
但没有效果。JsonLoadSettings 类没有用于处理日期的属性。
更新
这是在我更改计算机中的时区后发生的。-7 是PDT。我试图使用不同的时区测试我的日期转换。将我的计算机时区从太平洋更改为东部后的日期,在 JArray.Parse 之后它变成“2017-08-25T19:49:27.753-04:00”。这搞乱了我自己的日期转换,我试图将通常的 utc 转换为本地机器时间。
我刚刚测试了两种不同的方法,一种使用JsonConvert.SerializeObject<T>,另一种使用JArray.Load(JsonReader). 无论我所在的时区如何,这两种方法都适合我。
var serialized = "[\"2017-08-25T20:57:14.3914448+02:00\",\"2017-08-25T18:57:14.3914448+00:00\"]";
//Using JsonConvert.DeserializeObject
var resultA = JsonConvert.DeserializeObject<IEnumerable<DateTimeOffset>>(serialized);
//Using JArray /w JsonReader
var jsonReader = new JsonTextReader(new StringReader(serialized)){DateParseHandling = DateParseHandling.DateTimeOffset};
var resultB = JArray.Load(jsonReader);
Run Code Online (Sandbox Code Playgroud)
但是,我不明白你为什么说:
这搞乱了我自己的日期转换,我试图将通常的 utc 转换为本地机器时间。
这显然不是 UTC 时间,因此不应如此对待。UTC 基本上是格林威治时间(时区偏移 0),但您的日期时间字符串表示时区偏移 -7 小时。
| 归档时间: |
|
| 查看次数: |
1607 次 |
| 最近记录: |