[英]Error Message as “String was not recognized as a valid DateTime.”
我的代码:
DateTime? birthDate = DateTime.Parse(filterDictionary.ContainsKey("DOB") ? filterDictionary["DOB"] : string.Empty);
我收到错误消息,因为“字符串未被识别为有效的DateTime。” 如何解决这个问题。 谢谢。
问题(至少其中一个)是您无法将空字符串解析为DateTime
。
将您的代码行更改为此,以仅在找到密钥时才移动解析,并在没有密钥时返回null而不是解析:
DateTime? birthDate = filterDictionary.ContainsKey("DOB") ? DateTime.Parse( filterDictionary["DOB"]) : (DateTime?) null;
另一个问题可能是您的字典DOB值实际上无法转换为DateTime
。 如果以上代码不起作用,请在filterDictionary["DOB"]
此错误时编辑您的问题,并将值发布到filterDictionary["DOB"]
。
当您使用空字符串显示DateTime.Parse
时,它总是会失败。
目前尚不清楚,你已经看到了这个时间是否已经一个地方出现了字典中的数据,但它是无效的,或者是否存在一直没有数据,它的解析string.Empty
。 还请注意, DateTime.Parse
返回DateTime
,而不返回DateTime?
。 如果您想在条目不在字典中的情况下将该值设置为null
那么我实际上会使用:
DateTime? birthDate = null;
string dobText;
if (filterDictionary.TryGetValue("DOB", out dobText))
{
birthDate = DateTime.Parse(dobText);
}
也许:
string dobText;
DateTime? birthDay = filterDictionary.TryGetValue("DOB", out dobText)
? DateTime.Parse(dobText) : (DateTime?) null;
请注意,您需要在此处将第二或第三操作数中的至少一个强制转换为null
,以便编译器可以计算条件表达式的类型。
您还应该考虑对DateTime.Parse
的普通调用是否合适:
DateTime.ParseExact
TryParse
或TryParseExact
CultureInfo.InvariantCulture
的解析CultureInfo.InvariantCulture
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.