Coldfusion DateDiff mit Zeitformat über 24 Stunden
-
10-10-2019 - |
Frage
Ich bin zur Zeit die Menge der Zeit, die Menschen sind auf unserer Website zu verfolgen.
Jeder Benutzer hat eine Menge Zeit Satz für sie, ob es 0.10.00 (10 mintues) oder 100: 00: 00 (100 Stunden)
.Das Problem kommt, wenn ich mit dieser Codezeile:
<cfset seconds_left = datediff("s",variables.time_used,form.site_time)>
Wenn einer dieser Variablen ist über 24 Stunden (24:00:00) wird es einen Fehler aus:
40:00:00 ist ein ungültiges Datum oder Uhrzeit String.
Alle Vorschläge, wie dieses Problem zu beheben wäre toll, danke!
Lösung
Option 1 : gültige Datum Zeitwert verfolgen. Bei der Anmeldung (oder ersten Besuch) Satz <cfset session.start_time = now()>
. die Dauer zu bestimmen, die Berechnung ist als solche:
<cfset duration = dateDiff("s", session.start_time, now()))>
Option 2 : Wendezeit Werte, die Sie gerade arbeiten in Sekunden und tun einfache Subtraktion.
<cffunction name="ts2secs" output="false" access="public" returntype="numeric" hint="Take a time string and return number of seconds">
<cfargument name="ts" type="string" required="true" hint="formated as h:m:s"/>
<cfset var local = structNew()/>
<cfset var pieces = listToArray(arguments.ts, ":")>
<cfset var hours = pieces[1]>
<cfset var minutes = pieces[2]>
<cfset var seconds = pieces[3]>
<cfreturn (hours * 60 * 60) + (minutes * 60) + seconds>
</cffunction>
<cfset duration = ts2secs(variables.time_used) - ts2secs(form.site_time)>