5

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

4

3 回答 3

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.
于 2010-03-25T16:46:02.530 回答
3
IsDate("pony") ' Returns false
于 2010-03-25T16:28:29.087 回答
1

我认为挑战在于使解决方案独立于本地区域设置,这在许多情况下是先决条件。

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

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

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
于 2016-01-31T15:05:43.413 回答