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

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » VBS/WSH/JS - [решено] Сравнить время в VBS

Ответить
Настройки темы
VBS/WSH/JS - [решено] Сравнить время в VBS

Аватара для Morpheus

Ветеран


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


Конфигурация

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


Всем привет!

Есть переменная со временем в стандартном формате hh:mm:ss, есть вторая,
Код: Выделить весь код
nTime = Time
в которую пишется ну вы поняли что
Как бы их сравнить?
Значение в первой переменной меняется раз в несколько минут. Разумеется будут переходы через 0 часов и надо избежать ошибок типа "с 23:59:40 по 0:01:01 прошло -23 часа...". В другой переменной есть дата, можно в принципе и её задействовать при необходимости.

Попалась мне DateDiff, но она почему-то не работает даже у них на сайте...

Отправлено: 18:30, 17-01-2012

 

Ветеран


Contributor


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

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


Morpheus, у меня получилось без проблем, только для определения времени (точнее даты-времени) я использую функцию Now. Здесь разницу получаю в секундах. По видимому, можно тупо сравнить, что больше, одно время или другое, не используя DateDiff, если не интересна разница.
Код: Выделить весь код
a = Now
MsgBox " Не нажимайте ОК некоторое время" + vbCrLf + "Чтобы проверить, переставьте системные дату и время"
b = Now
    
s = DateDiff("s", a, b)
    
If a > b Then L = ">" Else L = "<"
    
MsgBox CStr(b) + vbCrLf + CStr(a) + vbCrLf + CStr(s) + vbCrLf + CStr(a) + L + CStr(b)

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Последний раз редактировалось megaloman, 17-01-2012 в 21:00.

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

Отправлено: 20:47, 17-01-2012 | #2



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

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Ветеран


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

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


Morpheus, а если поточнее, что именно надо сравнивать (физический смысл величин)? Ибо я завсегда пользуюсь именно DateDiff. Суть в том, что сравнивать надо именно полные дату-время (ну, или привести их к этому типу данных).
Это сообщение посчитали полезным следующие участники:

Отправлено: 21:34, 17-01-2012 | #3


Аватара для Morpheus

Ветеран


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

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


Спасибо! Действительно работает
У меня не срабатывало потому, что я не умею задавать переменные. Если точнее, задавал в одной процедуре, а рассчитывал поиспользовать в другой - не вышло
У них не срабатывало из-за "Jan". Стоило заменить на "01" и поехало. А я достаточно времени потратил на приведение к их формату. Шайсе... Работает только в IE, это нормально?
Кстати работает и если сравнивать только время, без даты, но наверное будут траблы при переходе в следующие сутки.

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


Ветеран


Сообщения: 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



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » VBS/WSH/JS - [решено] Сравнить время в VBS

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] Как сравнить "дата+время" двух файлов? Dmitry S. Скриптовые языки администрирования Windows 11 08-10-2011 14:48
VBS/WSH/JS - [решено] HTA + VBS | Чем отлаживать VBS в теле HTA vxor Программирование и базы данных 8 10-03-2011 11:17
VBS/WSH/JS - Помогите редактировать Autorun_Disable.vbs на Autorun_Enable.vbs nod201 Скриптовые языки администрирования Windows 0 05-12-2009 05:44
вирус и червь VBS/Small.k,VBS/Small.NAB zelen Лечение систем от вредоносных программ 1 25-12-2008 10:44
Сравнить исходники. Guest Программирование и базы данных 1 28-01-2004 03:28




 
Переход