Учитывая вариант, есть ли в VBScript эквивалент метода C# DateTime.TryParse?
Есть ли в VBScript эквивалент DateTime.TryParse?
Ответы (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.
Я считаю, что задача состоит в том, чтобы сделать решение независимым от местных региональных настроек, что является предварительным требованием во многих ситуациях.
Единственный способ, который я нашел, - использовать 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