将日期字段从动态上下文分配给C#中的字符串值

时间:2018-10-10 18:31:03

标签: c# angular

我遇到过这种情况,其中从有角度的服务进行API调用。

/usr/lib/mono

isoDate字段现在具有“ 10/10/2018 15:20:55”,而不是原始值“ 2018-10-10T17:03:38.000Z”

有什么主意吗?

我想出的解决方法是如下传递带有后缀和前缀的日期 “ | 2018-10-10T17:03:38.000Z |”并替换为“ |”一旦分配了isoDate的值,则使用空字符串。 看来这仍然是一种破解,但仍然有效。

只想了解内部原因。 谢谢。

2 个答案:

答案 0 :(得分:0)

json中唯一真正的原始类型stringsnumbersbooleans,因此转换为dynamic expando对象)只能用于这些类型。以string传递的所有其他内容(如ISO8601格式的日期时间)保持为string

如果要转换为DateTime,则必须使用强类型模型,以便反序列化程序(对于Web-api,默认为 json.net )将尝试解析传入的字符串值为DateTime类型。建议使用强类型模型,因为在运行时命名错误的可能性较小(,因为您会在编译时捕获错误),并且可以使用诸如{{1} }。

另请参阅JSON Data Types

答案 1 :(得分:0)

我今天遇到相同的错误。

检查了包含ISO字符串日期的动态对象的属性,我发现它已经转换为包含Value属性的对象,该属性是Date对象(发生隐式转换,这是为了当然)。

enter image description here

在图像中,parametros是一个动态对象,dataPartida是一个属性,它是一个由Postman作为POST正文负载发送的ISO日期字符串。

为了解决我的问题,我做了:

string dataPartida = parametros["dataPartida"].Value.ToString("yyyy-MM-dd'T'HH:mm:ss");

希望有帮助!