我的代码:
DateTime? birthDate = DateTime.Parse(filterDictionary.ContainsKey("DOB") ? filterDictionary["DOB"] : string.Empty);
我收到错误消息,因为“字符串未被识别为有效的日期时间”。如何解决这个问题。谢谢。
问题(至少其中一个)是您无法将空字符串解析为DateTime
.
将您的代码行更改为仅在找到密钥时才移动解析,并在没有密钥时返回 null 而不是解析:
DateTime? birthDate = filterDictionary.ContainsKey("DOB") ? DateTime.Parse( filterDictionary["DOB"]) : (DateTime?) null;
另一个问题可能是您的字典 DOB 值实际上无法转换为DateTime
. 如果上述代码不起作用,请编辑您的问题并在filterDictionary["DOB"]
收到此错误时发布值。
当你用一个空字符串呈现它时,DateTime.Parse
它总是会失败。
不清楚你看到这个的时间是字典中有数据但它是无效的,还是没有数据并且它正在解析string.Empty
。还要注意DateTime.Parse
returns 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