使用isDate返回true vb.net

时间:2015-06-03 06:20:22

标签: vb.net

当我在.NET中使用isDate()方法时。它返回无效结果。为什么" AD05AD09"被读作日期。以下是我正在使用的代码。请给我正确的理由

    Dim value As String
    value = "AD05AD09"
    If IsDate(value) Then
        Dim oDate As Date
        oDate = CDate(value)
        MsgBox(Format(oDate, "yyyy-MM-dd"))
    Else
        MsgBox("a")
    End If

2 个答案:

答案 0 :(得分:2)

它被计为日期,因为http://en.wikipedia.org/wiki/Anno_Domini中所述的第一个“AD”,AD放在年份之前,但因为05不是4位而是2位,所以函数将其视为月份。第二个AD计为日期中的有效分隔符,如“12AD12AD2008”中的12/12/2008。

所以,

CDate("AD05AD09") '= 05/09
CDate("10AD10AD2000") '=10/10/2000

等等。

但BC不起作用,因为BC不能存储日期,因为你不能存储负数年......

答案 1 :(得分:1)

作为MSDN中的文字:

  

如果Expression是Date Data Type,则IsDate返回True,或者可以转换为Date;否则,它返回False。

但你应该采用常见的方式,DateTime.ParseDateTime.ParseExactConvert.ToDateTime等等。

请参阅此MSDN示例:

Dim dateValue As Date
Dim dateString As String = "2/16/2008" 

Try
  dateValue = Date.Parse(dateString)
  Console.WriteLine("'{0}' converted to {1}.", dateString, dateValue)
Catch e As FormatException
  Console.WriteLine("Unable to convert '{0}'.", dateString)
End Try