VBScript是否具有DateTime.TryParse等价物?

时间:2010-03-25 16:22:15

标签: datetime vbscript variant tryparse

给定一个变体,VBScript是否具有等效的C#的DateTime.TryParse方法?

3 个答案:

答案 0 :(得分:6)

将IsDate(stringDate)与CDate(stringDate)结合使用。

使用IsDate()函数确定日期是否可以转换为日期或时间。

CDate()可识别日期文字和时间文字以及一些属于可接受日期范围的数字。将数字转换为日期时,整数部分将转换为日期。从午夜开始,该数字的任何小数部分都将转换为一天中的某个时间。

CDate根据系统的区域设置识别日期格式。如果以不同于其中一个识别日期设置的格式提供日,月和年的正确顺序,则可能无法确定。此外,如果长日期格式还包含星期几字符串,则无法识别该日期格式。

以下示例使用CDate函数将字符串转换为日期。

MyDate = "October 19, 1962"   ' Define date.
MyShortDate = CDate(MyDate)   ' Convert to Date data type.
MyTime = "4:35:47 PM"         ' Define time.
MyShortTime = CDate(MyTime)   ' Convert to Date data type.

答案 1 :(得分:3)

IsDate("pony") ' Returns false

答案 2 :(得分:1)

我认为面临的挑战是使解决方案独立于当地的区域设置,这在很多情况下都是先决条件。

我找到的唯一方法是使用DateSerial(),因为vbs中不存在ParseExact()。

我认为下面的代码可以解决问题。应该有一种更平滑的方式来添加时间组件,但我没有找到它。 当然,这个确切的代码只涵盖了一种输入格式,但这就是我现在所需要的。

fixedDate = fixmydate("27-01-2016 18:00:00") 


Function fixmydate(mydate)  
    sday = cint(Mid(mydate,1,2))
    smonth = cint(Mid(mydate,4,2))
    syear = cint(Mid(mydate,7,4))

    shour = cint(Mid(mydate,12,2))
    sminute = cint(Mid(mydate,15,2))
    ssecond = cint(Mid(mydate,18,2))

    sdate = DateSerial(syear,smonth,sday)
    sdate = dateadd("h",shour,sdate)
    sdate = dateadd("n",sminute,sdate)
    sdate = dateadd("s",ssecond,sdate)


    fixmydate = sdate

End Function