# How to calculate total hours and minutes between two time? (Urgent)

In my form, it has two text box that i set its format to ##:## using MaskEdit.

These two textboxes are for user to key in time.
From 01:00  To 11:15

When user click the calculate button, program will calculate the time.  This is use to calculate total working hours.

The result.. should be 10:15, right?  how to do this?  any VB function can calculate this directly?

I used DateDiff function to calculate and return in minutes but the result not accurate. If not mistaken, it return 1 hours for this.

I have to save the calculation result in 10.15 (numberic field) so that i can use it to calculate total salary.  10.15 means 10 hours + 10 minutes.

I know the design is not good.. any good suggestion?
I have to save the total hours in numberic data type because in other forms, i used SQL to calculate total salary.  if save in string, the result will not accurate.

Please tell me how to solve this problem, thanks.
LVL 2
Asked:
###### Who is Participating?

Commented:
oops....

Sub test()

Dim TimeOne As String
Dim TimeTwo As String

TimeOne = TimeValue(Now)
TimeTwo = TimeValue(Now - 0.5)

MsgBox Format\$(TimeValue(TimeOne) - TimeValue(TimeTwo), "h:mm:ss")

End Sub
0

Commented:
Hi yongyih,

you can use datediff

DateDiff(interval, date1, date2[, firstdayofweek[, firstweekofyear]])

HTH:O)Bruintje
0

Commented:
Hi yongyih,

Try this:

Private Sub Command3_Click()
Text1 = "13:00"
Text2 = "23:15"
Dim starttime As Date
Dim stoptime As Date
starttime = Date + CDate(Text1)
stoptime = Date + CDate(Text2)
MsgBox Format(stoptime - starttime, "hh:mm")
End Sub
0

Commented:
you used it already, i'm getting lazy

you have to format the result

Sub test()

Dim TimeOne As String
Dim TimeTwo As String

TimeOne = TimeValue(Now)
TimeTwo = TimeValue(NOw-.5)

MsgBox Format\$(TimeValue(dteOut) - TimeValue(dteIn), "h:mm:ss")

end sub

HTH:O)Bruintje
0

Author Commented:
I try first, thanks.
0

Commented:
Try this:

Public Function TimeDiff(ByVal Interval As String, ByVal Time1 As String, ByVal Time2 As String)

Dim HourTime1, HourTime2, MinuteTime1, MinuteTime2, SecondTime1, SecondTime2, TimeDifference
Dim Time1InSeconds, Time2InSeconds
Time1 = FormatDateTime(Time1, vbLongTime)
Time2 = FormatDateTime(Time2, vbLongTime)
HourTime1 = Hour(Time1)
HourTime2 = Hour(Time2)
MinuteTime1 = Minute(Time1)
MinuteTime2 = Minute(Time2)
SecondTime1 = Second(Time1)
SecondTime2 = Second(Time2)
Time1InSeconds = SecondTime1 + (MinuteTime1 * 60) + (HourTime1 * 3600)
Time2InSeconds = SecondTime2 + (MinuteTime2 * 60) + (HourTime2 * 3600)
TimeDifference = Time2InSeconds - Time1InSeconds
Select Case Interval
Case "h"
TimeDifference = TimeDifference / 3600
Case "m"
TimeDifference = TimeDifference / 60
End Select
TimeDiff = TimeDifference
End Function

Call it this way,

TIME = TimeDiff("h", timStart, timNow)

Use "h" "m" "s" for hours minutes and seconds.

Good luck!
RichW
0

Author Commented:
Thanks everyone for your reply. ^_^
0

Commented:
u're welcome thanks for the points
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

## Already a member? Login.

All Courses

From novice to tech pro — start learning today.