2

私は現在、人々が私たちのサイトにいる時間を追跡しています。

各ユーザーには、00:10:00(10分)または100:00:00(100時間)のいずれの時間も設定されています。

このコード行を使用しているときに問題が発生します。

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

これらの変数のいずれかが24時間(24:00:00)を超えると、エラーがスローされます。

40:00:00は無効な日付または時刻の文字列です。

この問題を修正する方法についての提案は素晴らしいでしょう、ありがとう!

4

1 に答える 1

6

オプション1:有効な日時値を追跡します。ログイン時(または最初の訪問時)に設定し<cfset session.start_time = now()>ます。期間を決定するには、計算は次のようになります。

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

オプション2:作業している時間値を秒に変換し、単純な減算を実行します。

<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)>
于 2011-01-12T18:45:51.913 に答える