![](/img/trans.png)
[英]System.FormatException: String was not recognized as a valid DateTime
[英]DateTime-System.FormatException after deserialize json-String to DataSet
在将json字符串反序列化为数据集后,我对DateTime-Format有一个大问题。
Dim formatter = new JsonSerializerSettings() With { .DateFormatString = "yyyy-MM-ddThh:mm:ssZ" }
Dim json = JsonConvert.SerializeObject(result, Newtonsoft.Json.Formatting.Indented,formatter)
在这两行之后,我得到了格式正确的DateTime格式(例如“ 2015-11-24T09:36:00Z”)
但是之后,我必须将此json-string转换为DataSet-Object。 我这样做是这样的:
Dim ds = JsonConvert.DeserializeObject(Of DataSet)(json,formatter)
现在,DateTime-Value看起来像这样:“ 11/24/2015 09:36:00”
最后,此值以Exception结尾,如果我想将其解析为DateTime,则它不是有效的DateTime ...
DateTime.Parse("11/24/2015 09:36:00")
因此,也许有一些我必须使用的格式化程序? 我不知道...
希望你能帮我! 先感谢您!
编辑: Sample-Jsonstring:
{"records":[{"Key":"EIG*11111","ChangeDate":"2015-11-24T09:36:00Z"}]}
此更改日期将在DataRow中格式化为#11/24/2015 09:36:00 AM#
JSON.NET具有IsoDateTimeConverter
类,您可以在其中指定日期格式,以使用DateTimeFormat
属性将JSON字符串中格式化的UTC日期时间解析为DateTime
。 属性用法应如下所示:
Dim formatter As New IsoDateTimeConverter With { .DateTimeFormat = "dd/MM/yyyy" }
Dim ds = JsonConvert.DeserializeObject(Of DataSet)(json, formatter)
或以单行形式使用它:
Dim ds = JsonConvert.DeserializeObject(Of DataSet)(json, New IsoDateTimeConverter With { .DateTimeFormat = "dd/MM/yyyy" })
请注意,您需要添加Newtonsoft.Json.Converters
命名空间才能启用IsoDateTimeConverter
类。
然后,使用上面指定格式的DateTime.ParseExact()
来确保可以将返回的日期字符串转换为DateTime
类型。
相似的问题(在C#上下文中):
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.