Есть ли в VBScript эквивалент DateTime.TryParse? - PullRequest
5 голосов
/ 25 марта 2010

С учетом варианта, есть ли в VBScript эквивалент метода DateTime.TryParse в C #?

Ответы [ 3 ]

6 голосов
/ 25 марта 2010

Используйте 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.
3 голосов
/ 25 марта 2010
IsDate("pony") ' Returns false
1 голос
/ 31 января 2016

Я считаю, что задача состоит в том, чтобы сделать решение независимым от локальных региональных настроек, что является необходимым условием во многих ситуациях.

Единственный способ, который я нашел, это использовать 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
...