Still celebrating National IT Professionals Day with 3 months of free Premium Membership. Use Code ITDAY17

x
?
Solved

Trying to format datediff Hours, Minutes, Seconds

Posted on 2004-08-19
6
Medium Priority
?
730 Views
Last Modified: 2011-04-14
I track the date and time a user enters a site and leaves. I obtain the Hours, Minutes and Seconds with the following code:

            LoggedTimeHours = datediff("h", request.Cookies("TimeIn"), now())
            LoggedTimeMinutes = datediff("n", request.Cookies("TimeIn"), now())
            LoggedTimeSeconds = datediff("s", request.Cookies("TimeIn"), now())

It gives me results such as... 0 : 4 : 190 (Hours:Minutes:Seconds).

For longer Times I've also Noticed that the minutes can be in the hundreds and the seconds in the thousands.

I'm guessing that this is because what it is giving is the TOTAL number of hours/minutes/seconds between the two dates.

Does anyone have a reliable routine to break down the three numbers to show the time that has passed, (ie. 1 Hours : 2 Minutes : 45 Seconds), instead of the total number of each?
Thanks
0
Comment
Question by:fisherbrsnch00
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
6 Comments
 
LVL 12

Expert Comment

by:kingsfan76
ID: 11848947
here's a link to a post that i answered that does almost exactly the same thing.

you probably only need to change the line

totalSec = datediff("S",CurrentDate,EndDate)

to

totalSec = datediff("S", request.Cookies("TimeIn"), now())

and you might want to take out the day part if you don't want to display number of days
if you have any further question on the codes i'll be glad to help
0
 
LVL 19

Accepted Solution

by:
Dexstar earned 500 total points
ID: 11848983
fisherbrsnch00:
> Does anyone have a reliable routine to break down the three numbers to
> show the time that has passed, (ie. 1 Hours : 2 Minutes : 45 Seconds),
> instead of the total number of each?

Try this:

    const cSecondsPerDay         = 86400    ' 60*60*24
    const cSecondsPerHour       = 3600      ' 60*60
    const cSecondsPerMinute    = 60           ' Duh
   
    Function GetCountdownString( dtTarget )
        Dim dtTemp
        Dim nDays
        Dim nHours
        Dim nMinutes
        Dim nSeconds
        Dim strUnits
   
        On Error Resume Next
        dtTemp = CDate(dtTarget)
        If Err.Number <> 0 Then
            GetCountdownString = "Invalid Date"
        Else
            If dtTemp > Now() Then
                nSeconds = DateDiff("s", Now(), dtTemp)
            Else
                nSeconds = DateDiff("s", dtTemp, Now())
            End If
   
            ' Subtracting 0.5 forces it to truncate instead of round
            nDays        = CInt(nSeconds / cSecondsPerDay - 0.5)
            nSeconds    = nSeconds MOD cSecondsPerDay
            nHours        = CInt(nSeconds / cSecondsPerHour - 0.5)
            nSeconds    = nSeconds MOD cSecondsPerHour
            nMinutes    = CInt(nSeconds / cSecondsPerMinute - 0.5)
            nSeconds    = nSeconds MOD cSecondsPerMinute
   
            GetCountdownString = ""
   
            If nDays = 1 Then
                strUnits = "Day"
            Else
                strUnits = "Days"
            End If
            GetCountdownString = GetCountdownString & nDays & " " & strUnits & ", "
   
            If nHours = 1 Then
                strUnits = "Hour"
            Else
                strUnits = "Hours"
            End If
            GetCountdownString = GetCountdownString & nHours & " " & strUnits & ", "
   
            If nMinutes = 1 Then
                strUnits = "Minute"
            Else
                strUnits = "Minutes"
            End If
            GetCountdownString = GetCountdownString & nMinutes & " " & strUnits & ", "
   
            If nSeconds = 1 Then
                strUnits = "Second"
            Else
                strUnits = "Seconds"
            End If
            GetCountdownString = GetCountdownString & nSeconds & " " & strUnits
        End If
    End Function

Then if you want to get the total time, just pass in Request.Cookies("TimeIn") as a parameter to that function, and it will return a string that gives you the result.  You may want to tweak the function a little to get the exact format you want.  I'll help with that if you aren't sure what to do.  Just tell me what you want it to look like.

HTH,
Dex*
0
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.

 

Author Comment

by:fisherbrsnch00
ID: 11849491
kingsfan76, thanks, that worked great.
 
Tasneem, thanks for the post, but I've already implemented kingsfan76's code and I prefer doing these calculations on the server side.
0
 

Author Comment

by:fisherbrsnch00
ID: 11849502
My mistake, it was Dexstar's code that I used. So thank you Dexstar.
0
 
LVL 19

Expert Comment

by:Dexstar
ID: 11852213
fisherbrsnch00:

> My mistake, it was Dexstar's code that I used. So thank you Dexstar.

You're welcome.  Glad you got it working.  :)

-D*
0

Featured Post

Free Tool: IP Lookup

Get more info about an IP address or domain name, such as organization, abuse contacts and geolocation.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

I was asked about the differences between classic ASP and ASP.NET, so let me put them down here, for reference: Let's make the introductions... Classic ASP was launched by Microsoft in 1998 and dynamically generate web pages upon user interact…
This demonstration started out as a follow up to some recently posted questions on the subject of logging in: http://www.experts-exchange.com/Programming/Languages/Scripting/JavaScript/Q_28634665.html and http://www.experts-exchange.com/Programming/…
This tutorial will teach you the special effect of super speed similar to the fictional character Wally West aka "The Flash" After Shake : http://www.videocopilot.net/presets/after_shake/ All lightning effects with instructions : http://www.mediaf…
Sometimes it takes a new vantage point, apart from our everyday security practices, to truly see our Active Directory (AD) vulnerabilities. We get used to implementing the same techniques and checking the same areas for a breach. This pattern can re…

722 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question