Как преобразовать строку в формат datetime классический asp - PullRequest
1 голос
/ 03 января 2012

У меня есть одна переменная

Dim tt="2008-10-20 10:00:00.0000000"

Я хочу изменить ее на дату,

Ответы [ 5 ]

4 голосов
/ 03 января 2012

Попробуйте CDATE(tt) см. http://www.w3schools.com/vbscript/func_cdate.asp. Я использовал

vbscript cdate

в качестве ключевых слов в Google.Было больше результатов.

Редактировать: На основе комментария ниже (прошу прощения за путаницу), используя

FormatDateTime(date,format) 

Формат содержит следующие константы:

  • 0 = vbGeneralDate - по умолчанию.Возвращает дату: мм / дд / гг и время, если указано: чч: мм: сс PM / AM.
  • 1 = vbLongDate - Возвращает дату: день недели, имя месяца, год
  • 2 = vbShortDate - Возвращает дату: мм / дд / гг
  • 3 = vbLongTime - Время возврата: чч: мм: сс PM / AM
  • 4 = vbShortTime - Время возврата: чч: мм

(скопировано с http://www.w3schools.com/vbscript/func_formatdatetime.asp)

1 голос
/ 07 февраля 2017

Я предлагаю безопасное решение, которое возвращает результат, только если преобразование прошло успешно:

s="2008-10-20 10:00:00.0000000"
On Error Resume Next
d=CDate(Left(s,19))
On Error Goto 0
if not IsEmpty(d) then MsgBox d

Попробуйте ввести недопустимую дату или недопустимый формат.Результат будет пустым.

s="2008-02-31 10:00:00"

В тех же контекстах необходимо инициализировать результат сбора переменных CData.Я рекомендую инициализировать его как пустой.Пример ниже показывает такой случай - подсчет действительных дат в строковом массиве:

Lines = array("2008-10-20 10:00:00.0000000", "2008-10-20 10:00:00", "", "2008-02-31", "Today", "2017-02-7")
On Error Resume Next
Count=0
for each Line in Lines
    d=Empty
    d=CDate(Line)
    if not IsEmpty(d) then Count=Count+1
next
On Error Goto 0
MsgBox "Number of valid dates is "&Count

Правильный ответ - 2. Без инициализации мы получаем 5, поскольку CDate ничего не делает в случае ошибки, поэтому переменная сохраняет значение изнедавняя итерация в цикле.

0 голосов
/ 31 января 2016

Эта ссылка ( Страница MS CDate ) объясняет, что:

adate = CDate(astring)

преобразует строку в объект даты.Для этого вы можете отформатировать его с помощью функции FormatDateTime

str = FormatDateTime(Date)

, функция FormatDateTime является «умной» - она ​​будет форматироваться как дата и время, если присутствуют оба, в противном случаеон будет отформатирован с указанием даты или времени.

0 голосов
/ 31 января 2016

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

Чтобы этого избежать, нужно использовать DateSerial ()

и при необходимости добавьте к результату компоненты времени отдельно.

0 голосов
/ 03 января 2012

Если вам не нужны ваши миллисекунды, вы можете использовать следующее:

<script type="text/vbscript">
    s="2008-10-20 10:00:00.0000000"
    arr= Split(s, ".")
    d=CDate(arr(0))
    document.write(d)
</script>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...