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