2012-01-30 138 views

回答

13

事实上定时器功能让你秒,毫秒。返回值的整数部分的秒数,因为午夜的小数部分可以转化成毫秒 - 1000。

t = Timer 

' Int() behaves exacly like Floor() function, ie. it returns the biggest integer lower than function's argument 
temp = Int(t) 

Miliseconds = Int((t-temp) * 1000) 

Seconds = temp mod 60 
temp = Int(temp/60) 
Minutes = temp mod 60 
Hours = Int(temp/60) 

WScript.Echo Hours, Minutes, Seconds, Miliseconds 

' Let's format it 
strTime =   String(2 - Len(Hours), "0") & Hours & ":" 
strTime = strTime & String(2 - Len(Minutes), "0") & Minutes & ":" 
strTime = strTime & String(2 - Len(Seconds), "0") & Seconds & "." 
strTime = strTime & String(4 - Len(Miliseconds), "0") & Miliseconds 

WScript.Echo strTime 
1

大厦在MBU的回答只是相乘,这里是一个子版本。在你的代码周围向即时窗口中的消息洒上呼叫,以便你可以看到延迟发生的位置。

' *** Debug.Print the time with milliseconds, and a message of your choice 
Private Sub DebugPrintTime(strWhereFrom As String) 
On Error GoTo ErrHandler 

    Dim sglTimer As Single 
    Dim sglWholeSecs As Single 
    Dim Millisecs As Variant ' as a variant, Len() will give the length of string representation of this value 
    Dim Seconds As Variant 
    Dim Minutes As Variant 
    Dim Hours As Variant 
    Dim strTime As String 

    sglTimer = timer 
    sglWholeSecs = Int(sglTimer) 
    Millisecs = Int((sglTimer - sglWholeSecs) * 1000) 
    Seconds = sglWholeSecs Mod 60 
    sglWholeSecs = Int(sglWholeSecs/60) 
    Minutes = sglWholeSecs Mod 60 
    Hours = Int(sglWholeSecs/60) 

    strTime = String(2 - Len(Hours), "0") & Hours & ":" 
    strTime = strTime & String(2 - Len(Minutes), "0") & Minutes & ":" 
    strTime = strTime & String(2 - Len(Seconds), "0") & Seconds & "." 
    strTime = strTime & String(3 - Len(Millisecs), "0") & Millisecs 
    Debug.Print strTime, strWhereFrom 

    Exit Sub 
ErrHandler: 
    MsgBox "Error in Sub DebugPrintTime" & vbCrLf & Err.Description & vbCrLf & strWhereFrom 
    Err.Clear 
End Sub 
相关问题