我需要使用DateTime
数据来使用一些类似于以下格式的JSON:
Tue Jun 11 00:00:00 +0100 2019
我相信+0100是格林尼治标准时间的偏移量(+0100是英国夏令时)。我正在使用C#newtonsofts JsonConvert反序列化它。例如
List<Staff_Extra> staff_Extras = JsonConvert.DeserializeObject<List<Staff_Extra>>(jStaffExtra.ToString(), new JsonSerializerSettings
{
DateFormatString = "ddd MMM dd hh:mm:ss yyyy"
});
由于偏移量,这将引发异常。 DateFormatString
应该如何考虑此偏移量?
示例代码https://www.newtonsoft.com/json/help/html/DeserializeDateFormatString.htm
答案 0 :(得分:1)
为时区令牌部分添加zzz
。可以找到其他令牌here。
答案 1 :(得分:0)
如果要以转换为本地时间的方式读取该时间,请使用
DateTime.ParseExact(test, "ddd MMM dd hh:mm:ss zzz yyyy", null);
这将以6/10/2019 5:00:00 PM
的时间返回(我在美国文化中属于MDT)
如果您想将该时间作为当地时间读取并保留原始时区,请使用
DateTimeOffset.ParseExact(test, "ddd MMM dd hh:mm:ss zzz yyyy", null);
这将返回该时间为6/11/2019 12:00:00 AM +01:00
(保留时区偏移量)
如果要将其读取为当地时间,而忽略时区偏移量,请使用:
DateTimeOffset.ParseExact(test, "ddd MMM dd hh:mm:ss zzz yyyy", null).DateTime;
这将以6/11/2019 12:00:00 AM