Тема: VBScript: текущее время в формате с миллисекундами (hh:mm:ss.fff)
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
'=============================================================================
Результат работы примера:
Current time: 01:03:48.158
При этом предполагаются следующие региональные настройки времени:
REGEDIT4
[HKEY_CURRENT_USER\Control Panel\International]
"sTime"=":"
"sTimeFormat"="HH:mm:ss"
"iTimePrefix"="0"
Замечание: функция VBScript «Timer», как и любой другой метод измерения времени, имеет определённую точность (или, что в данном случае более правильно, разрешающую способность) измерения. Оценить её среднюю величину для конкретной программно-аппаратной конфигурации можно с помощью следующего скрипта:
Option Explicit
Dim arrTimerValues(1024)
Dim StartTimerValue
Dim i
Dim Summ
StartTimerValue = Timer
arrTimerValues(0) = Timer - StartTimerValue
Summ = 0
For i = LBound(arrTimerValues) + 1 To UBound(arrTimerValues)
Do
arrTimerValues(i) = Timer - StartTimerValue
Loop Until arrTimerValues(i) <> arrTimerValues(i - 1)
Summ = Summ + (arrTimerValues(i) - arrTimerValues(i - 1))
Next
'WScript.Echo "Time, sec " & vbTab & "Diff, sec "
'WScript.Echo "==============" & vbTab & "=============="
'
'For i = LBound(arrTimerValues) + 1 To UBound(arrTimerValues)
' WScript.Echo FormatNumber(arrTimerValues(i), 9) & vbTab & FormatNumber(arrTimerValues(i) - arrTimerValues(i - 1), 9)
'Next
WScript.Echo "==============" & vbTab & "=============="
WScript.Echo "Average, sec " & vbTab & FormatNumber(Summ / 1024, 9)
WScript.Echo "==============" & vbTab & "=============="
WScript.Quit 0
Отдельное спасибо коллеге kefi за замечание.
Дополнение: измерить характеристики таймера также можно с помощью утилиты ClockRes.