user3141349
user3141349

Reputation: 99

How to calculate timedifference in vb6

I want to calculate time difference in vb6. i had been done it in vb.net. but i don't know how to convert in vb6.Because the datetime type will not be available in vb6.

i have pasted my vb.net code below. how to do the same in vb6?

Public Sub timecal()
    Dim dFrom As DateTime
    Dim dTo As DateTime
    Dim tempstarttime As DateTime
    Dim idletime As String = "00:05:00"
    Dim Needtosub As String = "00:01:00"
    Dim timeDiff As String
    If DateTime.TryParse(start_time, dFrom) AndAlso DateTime.TryParse(end_time, dTo) Then
        Dim TS As TimeSpan = dTo - dFrom
        Dim hour As Integer = TS.Hours
        Dim mins As Integer = TS.Minutes
        Dim secs As Integer = TS.Seconds
        timeDiff = ((hour.ToString("00") + ":") + mins.ToString("00") + ":") + secs.ToString("00")
        sscheck1 = False
        If timeDiff >= idletime Then
            tempstarttime = System.DateTime.Parse(end_time)
            tempstarttime = tempstarttime.AddMinutes(-1)
            start_time = Strings.Format(tempstarttime, "yyyy-MM-dd HH:mm:ss")
            sscheck1 = True
        End If
    End If
End Sub

Upvotes: 3

Views: 35480

Answers (2)

C-Pound Guru
C-Pound Guru

Reputation: 16368

You can calculate the time difference between two Date values (which will include the time) using the DateDiff function

For difference in minutes:

Dim lMinutes as Long
lMinutes = DateDiff("n", dFrom, dTo)

For difference in seconds:

Dim lSeconds as Long
lSeconds = DateDiff("s", dFrom, dTo)

For difference in hours:

Dim lHours as Long
lHours = DateDiff("h", dFrom, dTo)

For the purposes of getting your string time diff in hours:minutes:seconds, I would do:

Dim lSeconds as Long, lMinutes as Long
lSeconds = DateDiff("s", dFrom, dTo)
lMinutes = Fix(lSeconds / 60) '// Gets the whole number (not rounded)
lSeconds = ((lSeconds / 60) - lMinutes) * 60 '// get the remaining seconds
sTimeDiff = "00:" & Format$(lMinutes, "00") & ":" & Format$(lSeconds, "00")

Note: If lMinutes is greater than 60, you'll need to do similar math to pull out the hours portion before pulling the minutes and seconds. This code assumes your timespan is less than an hour based on your example.

Upvotes: 9

user889030
user889030

Reputation: 4764

use vb DateDiff Function i.e

Dim datTim1 As Date = #1/4/2001#
Dim datTim2 As Date = #1/9/2001#
' Assume Sunday is specified as first day of the week. 
Dim wD As Long = DateDiff(DateInterval.Weekday, datTim1, datTim2)
Dim wY As Long = DateDiff(DateInterval.WeekOfYear, datTim1, datTim2)

or can be done with another general way

    Dim dtStart As Long
    Dim dtEnd As Long
    Dim result As Long
    Dim i As Integer

    dtStart = GetTickCount

    dtEnd = GetTickCount
    result = dtEnd – dtStart  // miliseconds 
   OutAddIn.objApptItem.Start = CDbl(result)   // miliseconds to date

Upvotes: 3

Related Questions