如何检查输入的日期应该大于vb.net中的系统日期

时间:2013-11-26 11:17:26

标签: vb.net windows winforms function user-defined-functions

继承人问题,我按照以下格式传递日期:mm / dd / yyyy。 当我将日期作为02/02/2010传递给函数时,它总是返回true但是我已经设置了如果日期小于系统日期它应该返回false的条件,但是对于输入的日期小于系统日期,它仍返回true。功能。

Private Function expiryvalidate(ByVal exp As String) As Boolean
    Dim ee As String
    ee = Format(CDate(exp), "MM/dd/yyyy")
    Dim dd As String = Format(DateTime.Now, "MM/dd/yyyy")
    If ee <> "0" Then

        If ee < dd Or ee = dd Then
            Return False
        Else
            Return True

        End If
    Else
        Return True
    End If
End Function

2 个答案:

答案 0 :(得分:3)

如果您可以将日期作为Date类型传递,那么就像这样:

Private Function expiryvalidate(ByVal myDate As Date) As Boolean
    Return myDate < Today
End Function

http://msdn.microsoft.com/en-us/library/system.datetime.today%28v=vs.110%29.aspx

如果传递的日期作为参数小于当前系统日期,则返回true,否则返回false。

如果您需要将日期作为字符串传递给函数,那么您可以将其称为:

dim IsExpired as boolean = expiryvalidate(date.parse("mystringdate"))

答案 1 :(得分:1)

比较两个假装它们应被视为日期的字符串在任何情况下都不能很好地结束。

您应该将输入字符串转换为日期,然后与DateTime.NowDateTime.Today进行比较。通过这种方式,编译器知道如何正确比较表示日期的值,而不会对日期的实际显示格式产生任何问题

Private Function expiryvalidate(ByVal exp As String) As Boolean
    Dim ee As DateTime
    Dim culture = CultureInfo.CreateSpecificCulture("en-US")
    Dim DateTimeStyles styles = DateTimeStyles.None;
    if DateTime.TryParse(exp, culture, styles, out ee ) Then
        if ee <= DateTime.Now Then
           Return True
        else
           Return False
    Else
        Return False
    End If
End Function

当然,如果您已经有一个要查看的日期时间,这将毫无用处 在这种情况下,检查可以内联完成,无需调用函数

if currentDate <= DateTime.Now Then 
   ......