inheritance人的问题,我通过一个datefunction,在以下格式:mm / dd / yyyy。 当我将date作为02/02/2010传递给函数时,它总是返回true,但是我已经提出了如果date小于系统date的情况下,它应该返回false,但是对于inputdateless于系统date的情况,它仍然会返回truefunction。
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
如果你可以通过日期作为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"))
比较两个字符串假装他们应该被视为日期不能在任何情况下结束。
您应该将输入字符串转换为日期,然后与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 ......