Question

Je suit l'évolution des temps que les gens sont sur notre site.

Chaque utilisateur dispose d'une quantité de jeu de temps pour eux, que ce soit 00:10:00 (10 mintues) ou 100: 00: 00 (100 heures)

.

Le problème vient quand je suis en utilisant cette ligne de code:

<cfset seconds_left = datediff("s",variables.time_used,form.site_time)>

Si l'une de ces variables est plus de 24 heures (24:00:00), il renvoie une erreur:

  

40:00:00 est une date invalide ou le temps   string.

Toutes les suggestions sur la façon de résoudre ce problème serait génial, merci!

Était-ce utile?

La solution

1 : le suivi des valeurs date-heure valides. Le login (ou première visite) <cfset session.start_time = now()> ensemble. Pour déterminer la durée du calcul est en tant que tel:

<cfset duration = dateDiff("s", session.start_time, now()))>

2 : valeurs de temps de tour vous travaillez en quelques secondes et faire une simple soustraction.

<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)>
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top