Ran*_*hey 2 coldfusion datediff
我目前正在跟踪人们访问我们网站的时间.
每个用户都有为他们设定的时间量,无论是00:10:00(10分钟)还是100:00:00(100小时).
当我使用这行代码时出现问题:
<cfset seconds_left = datediff("s",variables.time_used,form.site_time)>
Run Code Online (Sandbox Code Playgroud)
如果其中一个变量超过24小时(24:00:00),则会抛出错误:
40:00:00是无效的日期或时间字符串.
关于如何解决这个问题的任何建议都会很棒,谢谢!
选项1:跟踪有效的日期时间值.登录(或首次访问)设置<cfset session.start_time = now()>.要确定计算的持续时间,请执行以下操作:
<cfset duration = dateDiff("s", session.start_time, now()))>
Run Code Online (Sandbox Code Playgroud)
选项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)>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1685 次 |
| 最近记录: |