在VB.NET中解析日期时出现InvalidCastException

时间:2010-03-03 15:00:56

标签: vb.net datetime .net

我正在尝试将输入TextBox的日期解析为DateTime值,但我在TryParseExact方法中不断获得异常。我想做的是:

DateTime.TryParseExact(tbAddDate.Text.Trim, "yyMMdd", New CultureInfo("sv-SE"), DateTimeStyles.None, row.Date)

这将抛出InvalidCastException,并显示消息“从类型'DBNull'转换为'Date'类型无效。”我意识到发生了什么,它正在尝试将row.Date设置为DBNull,这不是DateTime的有效值。我不明白为什么它试图这样做,因为文档声明它应该设置为MinValue而不是DBNull。

作为旁注,我知道我可以通过使用DateTimePicker解决很多这些问题,但客户觉得它们非常笨重,因为无法直接用键盘输入日期。

1 个答案:

答案 0 :(得分:1)

似乎(正如magnifico的评论所暗示的那样)问题与您将row.Date作为结果参数传递的事实严格相关。当代码尝试使用row.Date分配Date.MinValue时必须进行此操作(除非文档不准确,在此方案中不太可能)。 我建议您传递一些不同的结果参数,并在调用row.Date后使用其值更新TryParseExact。它可能不是最终的永久解决方案,但它应该帮助您检查此错误并找到InvalidCast异常的原因。

旁注:也许这个row.Date不接受Date.MinValue作为合法值,即:row.Date可能愿意仅接受2000年1月1日起的日期,{{1返回01/01/0001。