将json-String反序列化为DataSet后的DateTime-System.FormatException

时间:2018-04-04 18:17:19

标签: c# json vb.net datetime json.net

在将json-string反序列化为数据集后,我对DateTime-Format有一个大问题。

DateTime.Parse("11/24/2015 09:36:00")

在这两行后,我得到了一个格式良好的DateTime-Format (例如" 2015-11-24T09:36:00Z")

但在那之后,我必须将这个json-string转换为DataSet-Object。 我是这样做的:

{"records":[{"Key":"EIG*11111","ChangeDate":"2015-11-24T09:36:00Z"}]}

现在,DateTime-Value看起来像这样:" 11/24/2015 09:36:00"

最后这个值以异常结束,它不是valide DateTime,如果我想将它解析为DateTime ......

bash

所以也许我必须使用一些格式化程序? 我不知道......

希望你能帮助我! 提前谢谢!

修改 样品Jsonstring:

hashMap

此ChangeDate将格式化为#11/24/2015 09:36:00 AM#DataRow

1 个答案:

答案 0 :(得分:0)

JSON.NET有IsoDateTimeConverter类,您可以在其中指定日期格式,以将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以确保返回的日期字符串可以转换为<?xml version="1.0" encoding="UTF-8"?> <solver> <solutionClass>com.mycompany.planner.domain.VersionPlanning</solutionClass> <entityClass>com.mycompany.planner.domain.PlanningIssue</entityClass> <scoreDirectorFactory> <scoreDrl>planner/solver/scoreRules.drl</scoreDrl> </scoreDirectorFactory> <termination> <secondsSpentLimit>290</secondsSpentLimit> </termination> </solver> 类型。

类似问题(在C#上下文中):

DateTimeFormat