当前位置: 代码迷 >> PB >> 计算时间,该如何处理
  详细解决方案

计算时间,该如何处理

热度:28   发布时间:2016-04-29 08:21:45.0
计算时间
我要做一种网吧计时系统,多用户分别计时,请问分别计时时间如何实现,请给个思路吧,谢谢了

------解决方案--------------------
引用楼主 enchantment 的帖子:
我要做一种网吧计时系统,多用户分别计时,请问分别计时时间如何实现,请给个思路吧,谢谢了

------解决方案--------------------
呵,分别记录用户登陆时间,然后用服务器时间减去当前时间
用daysafter先取得天数,再用secondsafter取得时间相差秒数,
用24 * 天数 + 秒数 /60就是想要的小时数
------解决方案--------------------
定义一个函数of_relativedatetime(datetime adtm_start,long al_offset)returns datetime
datetime ldtm_null
date ld_sdate
time lt_stime
long ll_date_adjust
long ll_time_adjust,ll_time_test
if isnull(adtm_start) or isnull(al_offset) then 
setnull(ldtm_null)
return ldtm_null
end if 
if not of_isvalid(adtm_start) then 
return ldtm_null
end if 
ld_sdate=date(adtm_start)
lt_stime=time(adtm_start)
ll_date_adjust=al_offset/86400
ll_time_adjust=mod(al_offset,86400)

ld_sdate=relativedate(ld_sdate,ll_date_adjust)

if ll_time_adjust>0 then 
ll_time_test=secondsafter(lt_stime,time('23:59:59'))
if ll_time_test>ll_time_adjust then 
ld_sdate=relativedate(ld_sdate,1)
ll_time_adjust=ll_time_adjust - ll_time_test - 1
lt_stime=time('00:00:00')
end if 
lt_stime=relativetime(lt_stime,ll_time_test)
elseif ll_time_adjust<0 then 
ll_time_test=secondsafter(lt_stime,time('00:00:00'))
if ll_time_test>ll_time_adjust then 
ld_sdate=relativedate(ld_sdate, -1)
ll_time_adjust=ll_time_adjust - ll_time_test +1
lt_stime=time('23:59:59')
end if 
lt_stime=relativetime(lt_stime,ll_time_test)
end if 
return datetime(ld_sdate,lt_stime)
  相关解决方案