继承人问题,我按照以下格式传递日期: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
答案 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.Now
或DateTime.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
......