Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Morpheus, проблема в том, что для иноязычных пользователей сие как раз может и сработать .

Именно в VBScript есть ещё одна полезная функция — SetLocale(), иногда помогающая при переводе текстового представления даты/времени в тип дата/время. Например, приведённый пример для нас мог бы выглядеть так (я заведомо привожу избыточный код — для удобства демонстрации; исполнять лучше под «cscript.exe» — много вывода):
Код: Выделить весь код
Option Explicit

Dim dtDateFirst
Dim dtDateSecond

Dim prevLocale


prevLocale = SetLocale("en-us")
WScript.Echo prevLocale

dtDateFirst  = CDate("31-Jan-09 00:00:00")
dtDateSecond = CDate("31-Jan-10 23:59:00")

prevLocale = SetLocale(prevLocale)
WScript.Echo prevLocale

WScript.Echo
WScript.Echo FormatDateTime(dtDateFirst,  vbLongDate) & ", " & FormatDateTime(dtDateFirst,  vbLongTime)
WScript.Echo FormatDateTime(dtDateSecond, vbLongDate) & ", " & FormatDateTime(dtDateSecond,  vbLongTime)

WScript.Echo
WScript.Echo DateDiff("yyyy", dtDateFirst, dtDateSecond)
WScript.Echo DateDiff("q",    dtDateFirst, dtDateSecond)
WScript.Echo DateDiff("m",    dtDateFirst, dtDateSecond)
WScript.Echo DateDiff("y",    dtDateFirst, dtDateSecond)
WScript.Echo DateDiff("d",    dtDateFirst, dtDateSecond)
WScript.Echo DateDiff("w",    dtDateFirst, dtDateSecond)
WScript.Echo DateDiff("ww",   dtDateFirst, dtDateSecond)
WScript.Echo DateDiff("h",    dtDateFirst, dtDateSecond)
WScript.Echo DateDiff("n",    dtDateFirst, dtDateSecond)
WScript.Echo DateDiff("s",    dtDateFirst, dtDateSecond)

WScript.Quit 0
Результат
Цитата:
Код: Выделить весь код
1049
1033

суббота, 31 января 2009 года, 00:00:00
воскресенье, 31 января 2010 года, 23:59:00

1
4
12
365
365
52
53
8783
527039
31622340
У Вас может быть немного иной формат вывода даты — я использую региональные настройки даты/времени, отличные от умолчальных.

И, вот, если в этом коде закомментировать относящееся к «SetLocale()» — мы закономерно получим ошибку времени исполнения на функции преобразования типа «CDate()»:
Цитата:
Ошибка выполнения Microsoft VBScript (12, 1) : Несоответствие типа: 'CDate'

Последний раз редактировалось Iska, 17-01-2012 в 23:06. Причина: Добавлено «преобразования типа»

Это сообщение посчитали полезным следующие участники:

Отправлено: 22:57, 17-01-2012 | #5