【问题标题】:Does VBScript have a DateTime.TryParse equivalent?VBScript 是否有 DateTime.TryParse 等价物?
【发布时间】:2010-03-25 16:22:15
【问题描述】:

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

【问题讨论】:

    标签: datetime vbscript variant tryparse


    【解决方案1】:

    将 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.
    

    【讨论】:

      【解决方案2】:
      IsDate("pony") ' Returns false
      

      【讨论】:

        【解决方案3】:

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

        我发现的唯一方法是使用 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
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2021-03-29
          • 2011-01-16
          • 2020-09-20
          • 2011-06-13
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多