当我在.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
答案 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.Parse
,DateTime.ParseExact
,Convert.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