[英]ASP.NET Controller FormatException: String was not recognized as a valid DateTime
在Postman中,我通过POST将以下JSON发送到API。
{
"id": "21",
"crgName": "Walgreens - 11/07/2018 - Standard ",
"crgStarteddatetime": "2018-11-07T10:11:10",
}
...但是,出现以下错误: FormatException:无法将字符串识别为有效的DateTime。
在控制器内部,我正在使用DateTimeFormat格式化日期时间:
public static RemoteContextType DeserializeJsonString<RemoteContextType>(string jsonString)
{
//create an instance of generic type object
RemoteContextType obj = Activator.CreateInstance<RemoteContextType>();
MemoryStream ms = new MemoryStream(Encoding.Unicode.GetBytes(jsonString));
var serializer = new DataContractJsonSerializer(obj.GetType(),
new DataContractJsonSerializerSettings
{
DateTimeFormat = new
DateTimeFormat("yyyy-MM-dd'T'HH:mm:ss.fff'Z'")
});
obj = (RemoteContextType)serializer.ReadObject(ms);
ms.Close();
return obj;
}
...我的语法中是否有关于日期格式的问题? 我的意图是格式化日期,因为它反映在JSON中。 我做错了什么可以帮助我吗?
问题出在这一行:
DateTimeFormat = new DateTimeFormat("yyyy-MM-dd'T'HH:mm:ss.fff'Z'")
您正在使用'Z'
格式说明符和3位秒分数( fff
格式说明符 )来指定与UTC / Zulu日期时间完全相同'Z'
格式,但是crgStarteddatetime
中使用的值没有两者(即yyyy-MM-dd'T'HH:mm:ss
)。
根据JSON示例,您应该更改格式以完全匹配crgStarteddatetime
提供的crgStarteddatetime
:
var serializer = new DataContractJsonSerializer(obj.GetType(), new DataContractJsonSerializerSettings
{
DateTimeFormat = new DateTimeFormat("yyyy-MM-dd'T'HH:mm:ss")
});
如果crgStarteddatetime
实际JSON数据具有混合的日期格式(某些日期具有yyyy-MM-dd'T'HH:mm:ss
而其他日期则具有yyyy-MM-dd'T'HH:mm:ss'Z'
) ,请使用K
格式说明符 ,它更灵活地处理时区格式:
var serializer = new DataContractJsonSerializer(obj.GetType(), new DataContractJsonSerializerSettings
{
DateTimeFormat = new DateTimeFormat("yyyy-MM-dd'T'HH:mm:ssK")
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.