Go Premium for a chance to win a PS4. Enter to Win

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 159
  • Last Modified:

show time in m/s

I have this code that tells me how many seconds have elapsed
Private BeginTime As Date
Private FinishTime As Date
Private ElapsedTime As Long
Private Sub Command1_Click()


'Get the beginning time
BeginTime = Now




End Sub

Private Sub Command2_Click()
'Get the time after you exit the loop
FinishTime = Now

'Figure how many seconds between them
ElapsedTime = DateDiff("s", BeginTime, FinishTime)

'Display like this or with debug
For I = 1 To 1000
Label1.Caption = "Elapsed time in seconds " & ElapsedTime
Next
End Sub
how can i get it show milliseconds
0
leachim
Asked:
leachim
  • 7
  • 5
  • 4
  • +4
1 Solution
 
deightonCommented:
ElapsedTime = (FinishTime - BeginTime) * 24# * 3600000#


note that the pc clock ticks in 15ths of a second though.  


also in your code you are calculating finish time before, and not after performing the loop.




0
 
nutwissCommented:
try this instead - the system keeps an internal ms tick count (the function gettickcount shows ms since the machine was powered on):



Option Explicit

Private Declare Function GetTickCount Lib "kernel32" () As Long

Dim start As Double

Private Sub Command1_Click()
start = GetTickCount
End Sub

Private Sub Command2_Click()
MsgBox GetTickCount - start
End Sub
0
 
Ryan ChongCommented:
Hi leachim, you can use the GetTickCount api as BeginTime and FinishTime:

Option Explicit
Private Declare Function GetTickCount Lib "kernel32" () As Long
Dim BeginTime As Long, FinishTime As Long


Private Sub Command2_Click()
    FinishTime = GetTickCount
    Command2.Caption = Format$((FinishTime - BeginTime) / 1000, "0.00")
End Sub

Private Sub Form_Load()
    BeginTime = GetTickCount
End Sub

'Hope this give you an idea.

0
Concerto's Cloud Advisory Services

Want to avoid the missteps to gaining all the benefits of the cloud? Learn more about the different assessment options from our Cloud Advisory team.

 
leachimAuthor Commented:
deighton
can i just ask one thing more?
how can i format it so that it shows seconds and milliseconds
0
 
nutwissCommented:
ryancys's code shows how to format for seconds/ms
0
 
Ryan ChongCommented:
same idea with nutwiss but slow a little bit.
0
 
nutwissCommented:
and you'll have to excuse my appalling assignment of a long value to a double data-type ;)
0
 
leachimAuthor Commented:
Nutwiss
I am gratefull for your comments
I have accepted ryancys comment
but it has not registered yet
thanks again
0
 
nutwissCommented:
oh, go on, give me some points as well ;)

please? you know you want to!
0
 
deightonCommented:
Dim ElapsedTime As Double

Dim sFormat As String

'whatever

ElapsedTime = finishtime - begintime

sFormat = Format(ElapsedTime, "#0.000")
MsgBox sFormat

0
 
andyclapCommented:
deighton: that'll give you the number of days to 3dp!
0
 
ulischmidtCommented:


'Add the following code to your Module:
Public Declare Function timeGetTime Lib "winmm.dll" () As Long

'Add the following code to your form:
Private BeginTime As Long
Private FinishTime As Long
Private ElapsedTime As Long

Private Sub Command1_Click()
  'Get the beginning time
  BeginTime = timeGetTime
End Sub

Private Sub Command2_Click()
  'Get the time
  FinishTime = timeGetTime

  'Figure how many milliseconds between them
  ElapsedTime = FinishTime - BeginTime

  'Display like this or with debug
  Label1.Caption = "Elapsed time in ms " & ElapsedTime

End Sub
0
 
nutwissCommented:
ulischmidt ,

unfortunately, I believe this requires you have sound hardware installed for a multimedia timer to be present
0
 
nutwissCommented:
ps he's already accepted ryancys' answer.....
0
 
andyclapCommented:
Most people nowadays do, so it's valid to use it, however you really need to check that you're capable first, and degrade to the old inaccruate method if not.
0
 
leachimAuthor Commented:
hes already accepted ryancys' answer three times but to no avail
0
 
Ryan ChongCommented:
Hi leachim, is it my comment solve your problem?
0
 
ulischmidtCommented:
Hi nutwis
Of course u have always to check the capabilities for all timer functions, especially for the multimedia timer functions, which provide higher precision, you can do this with the timeGetDevCaps function.
declarations:

Type TIMECAPS
  wPeriodMin as Long 'Minimum supported resolution
  wPeriodMax as Long 'Maximum supported resolution
End Type
public declare function timeGetDevCaps lib "winmm.dll" alias "timeGetDevCaps"(lpTimeCaps as TIMECAPS, ByVal uSize as Long)

for this u need no Sound-hardware!
0
 
nutwissCommented:
true, true.... ;)
0
 
leachimAuthor Commented:
ryancys
yes i have accepted your comment as answer three times but it has not acknowledged so
0
 
Ryan ChongCommented:
Hi leachim, sorry about that due to my poor english. so what can i help you. : )
0
 
leachimAuthor Commented:
ryancys
you have helped already
thanks
0
 
costelloCommented:
Rejecting proposed answer.

Trying to force accept ryancys' comment.

costello
Community Support Moderator @ Experts-Exchange
0

Featured Post

VIDEO: THE CONCERTO CLOUD FOR HEALTHCARE

Modern healthcare requires a modern cloud. View this brief video to understand how the Concerto Cloud for Healthcare can help your organization.

  • 7
  • 5
  • 4
  • +4
Tackle projects and never again get stuck behind a technical roadblock.
Join Now