1

Тема: VBS : Как Получить время в формате hh:mm:ss:msec ?

VBS : Как Получить время в формате hh:mm:ss:msec ?

2

Re: VBS : Как Получить время в формате hh:mm:ss:msec ?

kefi, ты освоил копи-пастинг из заголовка темы в пост? Поздравляю, это достижение . Поделись технологией, как копировал? Мышкой тащил в браузере?

Откуда нужно получить время в формате hh:mm:ss:msec?

Предложения в русском языке начинаются с большой буквы и заканчиваются точкой.
В названии ветки всегда должен быть указан язык программирования или среда исполнения скрипта, если это возможно.

3 (изменено: -red-, 2009-02-19 13:50:50)

Re: VBS : Как Получить время в формате hh:mm:ss:msec ?

OFF: Слив защитан
Как узнать милисекунды не знаю:

MsgBox( Hour(Now)&":"&Minute(Now)&":"&Second(Now) )

4

Re: VBS : Как Получить время в формате hh:mm:ss:msec ?

-red-
Я не понял, а кто и от чего сливается-то?

Set dtmDate = CreateObject("WbemScripting.SWbemDateTime")
'dtmDate.SetVarDate(Now)
dtmDate.Value = "20090219235959.022000+180"
Wscript.Echo dtmDate.GetVarDate()
Wscript.Echo dtmDate.Microseconds
Wscript.Echo dtmDate.UTC
Предложения в русском языке начинаются с большой буквы и заканчиваются точкой.
В названии ветки всегда должен быть указан язык программирования или среда исполнения скрипта, если это возможно.

5 (изменено: kefi, 2009-02-19 17:13:00)

Re: VBS : Как Получить время в формате hh:mm:ss:msec ?

Ну все, загнали под плинтус ... :weep:

The gray Cardinal пишет:

kefi, ты освоил копи-пастинг из заголовка темы в пост? Поздравляю, это достижение http://forum.script-coding.com/img/smilies/lol.png. Поделись технологией, как копировал? Мышкой тащил в браузере?
Откуда нужно получить время в формате hh:mm:ss:msec?

Нет - тащил не мышкой? - а в чем , собсвенно, фишка такого вопроса?
Откуда - написано в теме - из VBS.

А вообще спасибо за щедрость, правда, вот  в win2K pro нет такого объекта. Нужно бы , чтобы под Win2K pro тоже работало.

Poltergeyst > Я Вас , конечно, насмешу, но нужны миллисекунды не для обратного, а для прямого отсчета полета на Марс, а также для логгирования работы программы.

6

Re: VBS : Как Получить время в формате hh:mm:ss:msec ?

Кстати , у меня чей-то и под XP микросекунды не выдает

The gray Cardinal  пишет:
Set dtmDate = CreateObject("WbemScripting.SWbemDateTime")
'dtmDate.SetVarDate(Now)
dtmDate.Value ="20090219160931.000000+180" ' супртив Вашего  "20090219235959.022000+180"
Wscript.Echo dtmDate.GetVarDate() ' 19.02.2009 16:09:31 
Wscript.Echo dtmDate.Microseconds ' 0
Wscript.Echo dtmDate.UTC ' 180

7

Re: VBS : Как Получить время в формате hh:mm:ss:msec ?

kefi пишет:

Откуда - написано в теме - из VBS.

Ты ещё скажи "из компьютера".

kefi пишет:

Кстати , у меня чей-то и под XP микросекунды не выдает

Выдаёт, просто они у тебя нулевые.

Пока других идей по работе с милли(микро)секундами у меня нет, а твой вопрос по-прежнему не ясен. Тебе нужны миллисекунды текущего времени, для записи в лог? Зачем такой ужасный лог?

Предложения в русском языке начинаются с большой буквы и заканчиваются точкой.
В названии ветки всегда должен быть указан язык программирования или среда исполнения скрипта, если это возможно.

8

Re: VBS : Как Получить время в формате hh:mm:ss:msec ?

Как вариант. Код LangMF 7.7.

'------------------------------------------------------------------------------
'SYSTEMTIME
'[
'    wYear:             word;
'    wMonth:         word;
'    wDayOfWeek:         word;
'    wDay:             word;
'    wDay:             word;
'    wMinute:         word;
'    wSecond:         word;
'    wMilliseconds:         word;
']
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~[Область модуля]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
<#Module=SystemTime>

    
'------------------------------------------------------------------------------
Sub Load(command)
    Dim Buf(16)
    Sys.DynAPI.CurBuf=0
    Sys.DynAPI.ReBuf(16)
    SYSTEMTIME=Sys.DynAPI.PtrBuf(0)
    '----------------------------------------------------------------------
    hRes    =Sys.DynApi.CallFunction( _
                    "KERNEL32.DLL", _
                    "GetLocalTime", _
                    SYSTEMTIME)
    
    '----------------------------------------------------------------------
    Sys.DynAPI.GetBuf(Buf)

    '----------------------------------------------------------------------
    wYear        =Sys.Conv.Byte4Long(0,0,buf(1), buf(0))
    wMonth        =Sys.Conv.Byte4Long(0,0,buf(3), buf(2))
    wDayOfWeek    =Sys.Conv.Byte4Long(0,0,buf(5), buf(4))
    wDay        =Sys.Conv.Byte4Long(0,0,buf(7), buf(6))
    wHour        =Sys.Conv.Byte4Long(0,0,buf(9), buf(8))
    wMinute        =Sys.Conv.Byte4Long(0,0,buf(11), buf(10))
    wSecond        =Sys.Conv.Byte4Long(0,0,buf(13), buf(12))
    wMilliseconds    =Sys.Conv.Byte4Long(0,0,buf(15), buf(14))
    '----------------------------------------------------------------------

MsgBox     "Год "         & wYear     & vbCR & _
    "Месяц "     & wMonth     & vbCR & _
    "День недели "     & wDayOfWeek     & vbCR & _
    "День месяца "     & wDay         & vbCR & _
    "Час "         & wHour     & vbCR & _
    "Минута "     & wMinute     & vbCR & _
    "Секунда "     & wSecond     & vbCR & _
    "Миллисекунда "    & wMilliseconds, _
    vbSystemModal
    '----------------------------------------------------------------------
EndMF
End Sub
   
<#Module>

9

Re: VBS : Как Получить время в формате hh:mm:ss:msec ?

kefi пишет:

а в чем , собсвенно, фишка такого вопроса?

В том, что вопросы надо задавать как следует, и нет смысла копировать заголовок в пост.

Предложения в русском языке начинаются с большой буквы и заканчиваются точкой.
В названии ветки всегда должен быть указан язык программирования или среда исполнения скрипта, если это возможно.

10

Re: VBS : Как Получить время в формате hh:mm:ss:msec ?

Poltergeyst
Это можно и в Коллекцию . Можно даже вариант на DynamicWrapperX + VBScript состряпать, если не лень.

Предложения в русском языке начинаются с большой буквы и заканчиваются точкой.
В названии ветки всегда должен быть указан язык программирования или среда исполнения скрипта, если это возможно.

11 (изменено: kefi, 2009-02-19 19:55:09)

Re: VBS : Как Получить время в формате hh:mm:ss:msec ?

Ты ещё скажи "из компьютера".

Не понял - что ты тогда хотел , когда спрашивал "откуда" ?
PS/
Два раза сказал, что из VBS, нет, Poltergeyst всеоавно для LangMF публикует пример. Что ж вам надо-то? Как яснее-то объяснить столь обширную тему ?

12

Re: VBS : Как Получить время в формате hh:mm:ss:msec ?

kefi
Не пытайся казаться глупее, чем ты есть. Получить "время из VBS" — это полнейший идиотизм. Получить текущее время в VBS — это уже нормально. Кстати, ты до сих пор прямо не подтвердил, что тебе нужно именно текущее время. Так что, может быть, мы до сих пор все разговариваем тут неизвестно о чём. Наводящие вопросы ты, кстати, тоже игнорируешь. Зачем тебе лог в миллисекундах?

Предложения в русском языке начинаются с большой буквы и заканчиваются точкой.
В названии ветки всегда должен быть указан язык программирования или среда исполнения скрипта, если это возможно.

13 (изменено: kefi, 2009-02-19 20:29:57)

Re: VBS : Как Получить время в формате hh:mm:ss:msec ?

The gray Cardinal пишет:

Не пытайся казаться глупее, чем ты есть. Получить "время из VBS" — это полнейший идиотизм.

Я не пытаюсь, я действительно глупее, чем я есть, м.б., следует признать твое мое название "идиот", если можете, смените мне логин на это имя .
Тем, что осталось в бестолковке,я наконец-то тепепатировал, что ты хотел сказать про "получить откуда", отказывается, пропущенное мной "текущее время" было всему виной.
Лог в миллисекундах, насколько я могу собразить, нужен, для того, чтобы знать сколько времени отработал тот или иной кусочек, программы, хотя, вообще говоря, это уже является офтопом, т.к. по теме - не важно , для чего это нужно. Другими словами, которые я еще могу наскрести на дне своего бессознания,  это означает, что для чего бы не требовалось получить текущее время в миллисекундах, его нужно получить в миллисекундах, причем желательно , чтобы работало и на Win200 pro и без подключения WinAPI функций.

14 (изменено: atomix, 2009-02-19 22:29:31)

Re: VBS : Как Получить время в формате hh:mm:ss:msec ?

to Poltergeyst:

лучше пиши так, и проще и понятней получается.

Да и кстати в твоем примере буфер надо указывать не buf(16) а buf(15) , т.к. буфер начинаеться с 0.

Declare Sub GetLocalTime Lib "kernel32" Alias "GetLocalTime" (lpSystemTime As SYSTEMTIME)

<#Module=SystemTime>
Type SYSTEMTIME
    wYear As Integer
    wMonth As Integer
    wDayOfWeek As Integer
    wDay As Integer
    wHour As Integer
    wMinute As Integer
    wSecond As Integer
    wMilliseconds As Integer
End Type

'------------------------------------------------------------------------------
Sub Load(command)
    Dim sysTime as SYSTEMTIME

    GetLocalTime(sysTime)

    with sysTime
    
      MsgBox  "Год "         & .wYear      & vbCR & _
              "Месяц "       & .wMonth     & vbCR & _
              "День недели " & .wDayOfWeek & vbCR & _
              "День месяца " & .wDay       & vbCR & _
              "Час "         & .wHour      & vbCR & _
              "Минута "      & .wMinute    & vbCR & _
              "Секунда "     & .wSecond    & vbCR & _
              "Миллисек. "   & .wMilliseconds, vbSystemModal
    
    end with
EndMF
End Sub
<#Module>

15

Re: VBS : Как Получить время в формате hh:mm:ss:msec ?

kefi пишет:

Лог в миллисекундах, насколько я могу собразить, нужен, для того, чтобы знать сколько времени отработал тот или иной кусочек, программы, хотя, вообще говоря, это уже является офтопом, т.к. по теме - не важно , для чего это нужно.

Сильно ошибаешься насчёт "не важно".

WScript.Echo Timer()
WScript.Sleep 2000
WScript.Echo Timer()
Предложения в русском языке начинаются с большой буквы и заканчиваются точкой.
В названии ветки всегда должен быть указан язык программирования или среда исполнения скрипта, если это возможно.

16

Re: VBS : Как Получить время в формате hh:mm:ss:msec ?

kefi
И ещё: редактор SciTE показывает время исполнения скрипта, примерно в такой форме:

>cscript /nologo "C:\Temp\Testing\test.vbs"    
72660,89
72662,89
>Exit code: 0    Time: 2.300

(Это вывод от исполнения скрипта постом выше.)

Предложения в русском языке начинаются с большой буквы и заканчиваются точкой.
В названии ветки всегда должен быть указан язык программирования или среда исполнения скрипта, если это возможно.

17

Re: VBS : Как Получить время в формате hh:mm:ss:msec ?

kefi
А вот правильный ответ на твой вопрос, заданный изначально:

WScript.Echo "23:59:59:59"

Теперь попробуй докажи мне, что я ответил на него неверно.
А "время в VBS" можно получать откуда угодно в какой угодно форме, например, в виде строки неизвестно какого формата, хранящейся в базе данных неизвестно какого формата. И вопрос мог сводиться к разбору и обработке этой строки, например. Вопрос мог сводиться к обработке времени, возвращаемого инструментами WMI и т.д., т.е что угодно вообще.

Предложения в русском языке начинаются с большой буквы и заканчиваются точкой.
В названии ветки всегда должен быть указан язык программирования или среда исполнения скрипта, если это возможно.

18

Re: VBS : Как Получить время в формате hh:mm:ss:msec ?

The gray Cardinal пишет:

А вот правильный ответ на твой вопрос, заданный изначально:

"Так бы сразу и сказаал ... "("Джентельмены удачи")
А я бы тебе тогда уточнил , что нужно , и тогда не пришлось бы тебе несколько раз намекать и говорить открытым текстом, что я идиот, из-за моей невнимательности при первом посте, который мне казался настолько простым, что я решился на преступление (правда , не знаю чего преступление) и просто скопировал заголовок в тему. А вообще, никогда нельзя полностью ничего определить правильно, всегда люди предполагают некоторое понимание недоговорености условий по умолчанию, пока ты не смог привести ни одного сколь - нибудь рузумного предположения относительно того. чтобы я мог подразумевать под своим вопросом :

А "время в VBS" можно получать откуда угодно в какой угодно форме, например, в виде строки неизвестно какого формата, хранящейся в базе данных неизвестно какого формата. И вопрос мог сводиться к разбору и обработке этой строки, например

Это все предположения не имеющие никакого разумного объяснения  в контексте темы, т.е. если бы человеку это было надо , он бы об этом упомянул.
Но , разумеется, если человек не идиот, а если предположить изначально обратное, тогда конечно , должны были бы возникнуть такие вопросы.
Короче разборок море, смысла - лужа для LanMF, которая является офтопом. За WMI я уже поблагодарил, за идиота тоже, хотелось бы все же , чтобы скрипт работал не только на XP машинах , но и на Win2000 .

19

Re: VBS : Как Получить время в формате hh:mm:ss:msec ?

The gray Cardinal пишет:

kefi написал:Кстати , у меня чей-то и под XP микросекунды не выдает

Выдаёт, просто они у тебя нулевые.

А почему они у меня нулевые, а у тебя не нулевые ? Я несколько раз делал попытки , а все сижу на нуле.

20

Re: VBS : Как Получить время в формате hh:mm:ss:msec ?

Option Explicit

Dim i


WScript.Echo "Текущее время:", strGetCurrTime(Timer)


Randomize Timer
For i = 1 To 50
    WScript.Echo strGetCurrTime(Timer)
    WScript.Sleep Int(200 * Rnd + 1)
Next

WScript.Quit 0
'=============================================================================

'=============================================================================
Function strGetCurrTime(dtTimer)
    Dim intHours
    Dim intMinutes
    Dim intSeconds
    Dim intMilliSeconds
    
    intHours        = dtTimer \ (60 * 60)
    intMinutes      = (dtTimer - (intHours * (60 * 60))) \ 60
    intSeconds      = Fix(dtTimer - (intHours * (60 * 60)) - intMinutes * 60)
    intMilliSeconds = Fix((dtTimer - Fix(dtTimer)) * 1000)
    
    strGetCurrTime = CStr(TimeSerial(intHours, intMinutes, intSeconds)) & "." & Right("000" & CStr(intMilliSeconds), 3)
End Function
'=============================================================================

21

Re: VBS : Как Получить время в формате hh:mm:ss:msec ?

Добавлю, почему именно «20:38:40.234», а не «20:38:40:234»: во всех встречавшихся мне форматах (в том числе и в MSDN) миллисекунды отделяются от секунд именно точкой [DateTime.Now.ToString("h:mm:ss.fff")].

22 (изменено: Poltergeyst, 2009-02-19 22:03:11)

Re: VBS : Как Получить время в формате hh:mm:ss:msec ?

atomix пишет:

лучше пиши так, и проще и понятней получается.

Спасибо, все работает

The Gray Cardinal пишет:

Это можно и в Коллекцию . Можно даже вариант на DynamicWrapperX + VBScript состряпать, если не лень.

Хорошо, подумаю об этом

23

Re: VBS : Как Получить время в формате hh:mm:ss:msec ?

2 alexii > Вот то, что было бы нужно . Но...
Но! Почему же пишется в Help'е ,что Timer возвращает число секунд, когда он еще и число сотых секунды выдает , т.е. можно ли доверять этим миллисекундам ?
Впрочем, погрешность , конечно, хотелось бы поменьше .....

24

Re: VBS : Как Получить время в формате hh:mm:ss:msec ?

В принципе, можно попробовать и проще, если не будет большого разрыва в коде между получением «Timer» и «Time()»:

Option Explicit

Dim dtTimer

dtTimer = Timer
WScript.Echo Time() & "." & Right("000" & CStr(Fix((dtTimer - Fix(dtTimer)) * 1000)), 3)

WScript.Quit 0

Но всё равно уже будет риск получить неверный результат.

25

Re: VBS : Как Получить время в формате hh:mm:ss:msec ?

kefi
"Так бы сразу и сказаал" — это про тебя, и только про тебя.

Это все предположения не имеющие никакого разумного объяснения  в контексте темы...

Да не было у темы никакого "контекста", а был только бодрый копи-пастинг заголовка в пост, с расчётом на телепатию всех присутствующих.

Про микросекунды в WMI забудь, т.к. теперь, исходя из "контекста", который наконец-то появился, они точно не нужны. Кстати, на сам вопрос тебе уже хорошо и неоднократно ответили, насколько я понимаю. А вот правильная формулировка твоего изначального вопроса:

Как для оценки производительности участка кода VBScript получить время с точностью до миллисекунд?

Всего лишь навсего, бляха муха.

Предложения в русском языке начинаются с большой буквы и заканчиваются точкой.
В названии ветки всегда должен быть указан язык программирования или среда исполнения скрипта, если это возможно.

26

Re: VBS : Как Получить время в формате hh:mm:ss:msec ?

2kefi: сравните с этим и посмотрите, где начинаются значения, которым уже нет смысла доверять. Я не знаю, как и на какой микросхеме сейчас реализуется тайминг, потому ничего конкретного про точность сказать не могу. Ранее это было (1/18.2) секунды.

Option Explicit

Dim i


Randomize Timer

For i = 1 To 50
    WScript.Echo strGetCurrTime(Timer)
    WScript.Sleep Int(200 * Rnd + 1)
Next

WScript.Quit 0
'=============================================================================

'=============================================================================
Function strGetCurrTime(dtTimer)
    Dim intHours
    Dim intMinutes
    Dim intSeconds
    Dim intMilliSeconds
    
    intHours        = dtTimer \ (60 * 60)
    intMinutes      = (dtTimer - (intHours * (60 * 60))) \ 60
    intSeconds      = Fix(dtTimer - (intHours * (60 * 60)) - intMinutes * 60)
    intMilliSeconds = Fix((dtTimer - Fix(dtTimer)) * 1000000)
    
    strGetCurrTime = CStr(TimeSerial(intHours, intMinutes, intSeconds)) & "." & Right("000000" & CStr(intMilliSeconds), 6)
End Function
'=============================================================================

27

Re: VBS : Как Получить время в формате hh:mm:ss:msec ?

alexii
Твои примеры тоже в Коллекцию неплохо бы поместить .

Предложения в русском языке начинаются с большой буквы и заканчиваются точкой.
В названии ветки всегда должен быть указан язык программирования или среда исполнения скрипта, если это возможно.

28

Re: VBS : Как Получить время в формате hh:mm:ss:msec ?

to Poltergeyst:

Еще исходник подправил, вообще ляпота стала

29

Re: VBS : Как Получить время в формате hh:mm:ss:msec ?

2The gray Cardinal, хорошо, но только первый. Насчёт второго у меня сильные сомнения — думаю, коль при использовании второго примера получить ошибку принципиально вполне возможно, то и не стоит его лепить в Коллекцию.

30

Re: VBS : Как Получить время в формате hh:mm:ss:msec ?

alexii пишет:

уже будет риск получить неверный результат

Да, конечно, это ни к чему. Есть же вышеприведенная Вами функция , она прячет все усложнения, которые Вы теперь вносите в код. Вопрос только в точности измерений , хотелось бы msec ... Впрочем , уже видимо, ничего не придумать, WMI вызовы , как и вызовы других объектов или WinAPI Windows из-под VBS будут вносить свои погрешности в определение времени, Т.е. , наверно, для VBS на сотых нужно остановиться .

31

Re: VBS : Как Получить время в формате hh:mm:ss:msec ?

А насчет Win32 & WMI - не спешите выбрасывать их в помойку. Они одинаково хорошо определяют миллисекунды, как и другие методы. Но между точным моментом определения миллисекунд и выводом сообщения или записью лога с количеством этих миллисекунд может существовать задержка, зависящая от выбранного метода. И это вовсе не погрешность

32

Re: VBS : Как Получить время в формате hh:mm:ss:msec ?

Выложил в Коллекцию первый пример: VBScript: текущее время в формате с миллисекундами (hh:mm:ss.fff).

33

Re: VBS : Как Получить время в формате hh:mm:ss:msec ?

OFF: Ой, сколько понаписали  =о

Решение в две строки, с точностью до 100-х долей:

Set timeNow = CreateObject("WScript.Shell").exec("CMD /C ECHO %TIME%").StdOut
msgbox timeNow.readline

34

Re: VBS : Как Получить время в формате hh:mm:ss:msec ?

1. Вы представляете как быстро будет исполняться в такой реализации код из #21 ?!
2. Переменная окружения %time%, мягко говоря, не совсем точно поддерживает заданные региональные стандарты.

35

Re: VBS : Как Получить время в формате hh:mm:ss:msec ?

Тоже задумался.. на запуск консоли будет уходить время. Но можно запустить её при старте самого VBS-скрипта и взаимодействовать с ней интерактивно во время исполнения.

региональные стандарты

Не совсем понял... Разве переменная %time% не "интернациональна"? Милисекунды они и в Африке милисекунды

p.s. это просто пример реализации по теме

36

Re: VBS : Как Получить время в формате hh:mm:ss:msec ?

А может все же кто-нибудь объяснить, отчего все же у меня не получается получить не нулевые milliсекунды  в этом коде :

Set dtmDate = CreateObject("WbemScripting.SWbemDateTime")
dtmDate.SetVarDate(Now)
dtmDate.Value ="20090219160931.[b]000000[/b]+180" ' супротив того, что у кардинала - "20090219235959.022000+180"

?

37

Re: VBS : Как Получить время в формате hh:mm:ss:msec ?

А что ты хочешь получить в качестве объяснений?

Wscript.Echo CStr(1) ' вот здесь нормально всё
Wscript.Echo CStr(0) ' не, ну объясните мне, а чё это оно здесь вдруг ноль выводит?
Предложения в русском языке начинаются с большой буквы и заканчиваются точкой.
В названии ветки всегда должен быть указан язык программирования или среда исполнения скрипта, если это возможно.

38

Re: VBS : Как Получить время в формате hh:mm:ss:msec ?

The gray Cardinal пишет:

А что ты хочешь получить в качестве объяснений?

А чтобы ты хотел получить , если бы у тебя возникла такая проблема ?

39

Re: VBS : Как Получить время в формате hh:mm:ss:msec ?

Какая проблема, ёперный театр? Что непонятного в том, что если миллисекунд нет в строковом представлении даты, то их и не оказывается при автоматическом разборе этой строки объектом "WbemScripting.SWbemDateTime"? В чём вопрос-то?

Предложения в русском языке начинаются с большой буквы и заканчиваются точкой.
В названии ветки всегда должен быть указан язык программирования или среда исполнения скрипта, если это возможно.

40

Re: VBS : Как Получить время в формате hh:mm:ss:msec ?

Люди, человеки! Хоть кто-нибудь здесь понимает, о чём спрашивает kefi?

Предложения в русском языке начинаются с большой буквы и заканчиваются точкой.
В названии ветки всегда должен быть указан язык программирования или среда исполнения скрипта, если это возможно.

41 (изменено: kefi, 2009-02-21 01:13:18)

Re: VBS : Как Получить время в формате hh:mm:ss:msec ?

The gray Cardinal пишет:

если миллисекунд нет в строковом представлении даты, то их и не оказывается при автоматическом разборе этой строки объектом "WbemScripting.SWbemDateTime" В чём вопрос-то?

Так в этом самом и вопрос , пятый раз пытаюсь выпытать - ПОЧЕМУ они у тебя есть в Now, а у меня нет ? Что непонятно-то ?

42

Re: VBS : Как Получить время в формате hh:mm:ss:msec ?

kefi пишет:

ПОЧЕМУ они у тебя есть в Now, а у меня нет ? Что непонятно-то ?

См. #4. Непонятно то, что у меня их нет в Now. Где ты там увидел миллисекунды в Now? Там есть микросекунды в строковой константе, которая набрана вручную на клавиатуре, исключительно для того, чтобы показать, что объект успешно обрабатывает микросекунды, работая с этим форматом даты.

Предложения в русском языке начинаются с большой буквы и заканчиваются точкой.
В названии ветки всегда должен быть указан язык программирования или среда исполнения скрипта, если это возможно.

43

Re: VBS : Как Получить время в формате hh:mm:ss:msec ?

2 The gray Cardinal > Ну дык ... сразу бы так и сказал, а то чукча еще долго бы репу чесала .

44

Re: VBS : Как Получить время в формате hh:mm:ss:msec ?

kefi, я просто охреневаю с тебя.

— ПОЧЕМУ у тебя это есть?
— У меня этого нет.
— Сразу бы так и сказал.

Очень интеллектуальная дискуссия.
Давай учись вопросы задавать как следует, чтобы хотя бы не ставить в тупик всех беспредельной нелепостью вопроса. Ты когда спрашиваешь, ставь себя на место потенциальных отвечающих. Представляй себе, как у них волосы шевелятся на голове от твоих "вопросов". Пиши и представляй себе, как твой вопрос читают, что могут подумать, прочитав, и т.д.

Предложения в русском языке начинаются с большой буквы и заканчиваются точкой.
В названии ветки всегда должен быть указан язык программирования или среда исполнения скрипта, если это возможно.

45

Re: VBS : Как Получить время в формате hh:mm:ss:msec ?

The gray Cardinal пишет:

Давай учись вопросы задавать как следует

Аднака, чукча уже 12-й год учится в интернете , все никак научитться не может.

46

Re: VBS : Как Получить время в формате hh:mm:ss:msec ?

kiber_punk пишет:

Но можно запустить её при старте самого VBS-скрипта и взаимодействовать с ней интерактивно во время исполнения.

Согласен, я как-то не подумал о такой возможности .

У меня, например, даже при приведённых в #1 региональных настройках времени ["sTimeFormat"="HH:mm:ss"], ведущий ноль заменяется пробелом при раскрытии переменной %time%:

C:\Temp>

. echo %time%
 4:55:03.25

C:\Temp>

.

В то же время в VBScript возвращается правильная трактовка с ведущим нулём:

WScript.Echo Time()
WScript.Echo Now()
04:58:19
21.02.2009 04:58:19

С другой строны — я даже не занимался этим вопросом, чтобы понять «це баг о це фича» .

47

Re: VBS : Как Получить время в формате hh:mm:ss:msec ?

alexii пишет:

Выложил в Коллекцию первый пример: VBScript: текущее время в формате с миллисекундами (hh:mm:ss.fff).

Только вот заголовок там (да что там заголовок и содержание ) некорректен. Дело в Вашем посте выше о том, с какого системного счетчика берется время, Я так думаю, что и %time% и Timer берут время с одного 1/18.2  сек счетчика , следовательно люди глядя в ту тему могут быть обмануты (если конечно не будут внимательны) на +-25 msec ( примерно 1/18.2=0.050 сек - абсолютная погрешность метода)
Надо бы  озаглавить,  как в формате с сотыми, да и то обратить внимание , что погрешность будет +-2.5 единицы.

48

Re: VBS : Как Получить время в формате hh:mm:ss:msec ?

kefi, формат времени, который я приводил, взят с MSDN, используется в WMI и .Net FrameWork как минимум. Вы можете привести ссылки по этому рассуждению:

kefi пишет:

Дело в Вашем посте выше о том, с какого системного счетчика берется время, Я так думаю, что и %time% и Timer берут время с одного 1/18.2  сек счетчика , следовательно люди глядя в ту тему могут быть обмануты (если конечно не будут внимательны) на +-25 msec ( примерно 1/18.2=0.050 сек - абсолютная погрешность метода)

49 (изменено: kefi, 2009-02-23 00:39:28)

Re: VBS : Как Получить время в формате hh:mm:ss:msec ?

alexii пишет:

kefi, формат времени, который я приводил, взят с MSDN, используется в WMI и .Net FrameWork как минимум. Вы можете привести ссылки по этому рассуждению:

kefi пишет:

Дело в Вашем посте выше о том, с какого системного счетчика берется время, Я так думаю, что и %time% и Timer берут время с одного 1/18.2  сек счетчика , следовательно люди глядя в ту тему могут быть обмануты (если конечно не будут внимательны) на +-25 msec ( примерно 1/18.2=0.050 сек - абсолютная погрешность метода)

Мда, видно поспешил я , Просто я руководствовался одним простым принципом - здравым смыслом (ну Вы знаете - это, когда знаний нет, а решение принять хочется ) , но малось лопухнулся. Не 18 Гц , а 64.
Ну т.е. я подумал, а отчего же это Timer  %time% при распечатке представляется системой с точностью до сотых секунды (подумал , что это они 18.2 Герца натягивают, но несколько дело не так - 64 герца ) :
Вот решил поднять свои старые вопросы и обнаружил, что оказывается для большинства это 64 Hz, но все-равно не 1000Hz, как предполагает Ваш алгоритм (Т.е., попросту говоря, Timer , конечно , дает число секунд с точносьтю до микро, т.е. миллионных, но они стоя'т на месте в течении 1/64 секунды, видно формат расчитан на продвинутое в этом отношении железо, которого у обычного юзера нет,  короче, в той теме описано ... ).
В общем-то в той теме все решено, кроме того , чтобы решить этот топик без привлечения API функций, ну т.е., как это и нужно было бы для чистого скриптинга.

50 (изменено: alexii, 2009-02-23 10:45:03)

Re: VBS : Как Получить время в формате hh:mm:ss:msec ?

Где-то здесь же видел такой:

Option Explicit

WScript.Echo "Current time: " & strGetCurrTime(Timer)

WScript.Quit 0
'=============================================================================

'=============================================================================
Function strGetCurrTime(dtTimer)
    Dim intHours
    Dim intMinutes
    Dim intSeconds
    Dim intMilliSeconds
 
    intHours        = dtTimer \ (60 * 60)
    intMinutes      = (dtTimer - (intHours * (60 * 60))) \ 60
    intSeconds      = Fix(dtTimer - (intHours * (60 * 60)) - intMinutes * 60)
    intMilliSeconds = Fix((dtTimer - Fix(dtTimer)) * 1000)
  
    strGetCurrTime = CStr(TimeSerial(intHours, intMinutes, intSeconds)) & "." & Right("000" & CStr(intMilliSeconds), 3)
End Function

51

Re: VBS : Как Получить время в формате hh:mm:ss:msec ?

52

Re: VBS : Как Получить время в формате hh:mm:ss:msec ?

Ещё один способ получить текущее время с миллисекундами:
VBScript: работа с датами с помощью компонента ISO8601 Component

Предложения в русском языке начинаются с большой буквы и заканчиваются точкой.
В названии ветки всегда должен быть указан язык программирования или среда исполнения скрипта, если это возможно.

53

Re: VBS : Как Получить время в формате hh:mm:ss:msec ?

2kefi: я обозрел достаточное количество информации на предмет измерения временных интервалов и самого времени на Wintel-платформе и сделал для себя некоторые выводы. В общем — что достаточно точных (и, главное, унифицированных) способов измерения временных отрезков на этой платформе в настоящее время не существует. В частности же, я решил добавить Ваше замечание в пост в Коллекции. Спасибо, коллега.