TryParse日期无效的自定义错误消息

时间:2018-12-10 14:23:51

标签: vb.net datetime tryparse

我有一个TryParse.Date()验证,用于验证通过文本框传递的日期,如果无效,则显示自定义消息框警告。

但是,在测试而不返回False并显示消息框时,它仅显示了提及String passed is not a valid Date的错误异常

这是我的代码片段

If Not Date.TryParse(txtDate.Text, "dd/MM/yyyy")
    MsgBox("Please enter a valid Date", MsgBoxStyle.Critical)
    Return
End If

因此,如果我传递一个字符串值01/01/99d,它将显示异常消息,而不是返回并进入循环?

有什么建议吗?

2 个答案:

答案 0 :(得分:2)

TryParse works并不是这样。第二个参数期望一个日期对象。我强烈建议您打开Option Strict。

您要寻找的是TryParseExact。它允许您设置自己的格式,但是仍然需要传递日期对象作为参数。页面上的漂亮示例,但我认为您可以将参数设置为Nothing。

Dim theDate As Date

If Not DateTime.TryParseExact(txtDate.Text, "dd/MM/yyyy", Nothing, Nothing, theDate) Then
...

注意:,即使您使用“ /”作为分隔符,也基于Rango注释。这可能会导致文化差异的人遇到问题。我强烈建议您正确设置文化,而不要使用Nothing。

答案 1 :(得分:1)

如果查看正在使用的Date.TryParse的重载定义,您会看到第二个参数应该是通过引用传递的Date

Date.TryParse Definition

这意味着第二个参数不应为字符串。

您可以更改代码以正确使用第二个参数,

Dim dateParam As Date

If Not Date.TryParse(txtDate.Text, dateParam) Then
    MsgBox("Please enter a valid Date", MsgBoxStyle.Critical)
    Return
End If