给定一个变体,VBScript是否具有等效的C#的DateTime.TryParse方法?
答案 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