Есть ли в VBScript эквивалент DateTime.TryParse?

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


person Jim G.    schedule 25.03.2010    source источник


Ответы (2)


Используйте 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.
person backslash17    schedule 25.03.2010

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

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