问: 现在做一个小系统,有两个字段为datetime类型,另外一个字段为这两个字段数值的差,就是想知道迟到了多长时间,然后根据迟到时间罚钱,我不知道两个时间相减该是什么类型的数据。其次我可否让得到的结果以小时为单位显示,这样乘以每小时的罚金就可以得到总的罚金! 答: 说明,adtm_start和adtm_end分别是你要比较的日期 long ll_total_seconds, ll_day_adjust date ld_sdate, ld_edate time lt_stime, lt_etime ld_sdate = date(adtm_start) ld_edate = date(adtm_end) lt_stime = time(adtm_start) lt_etime = time(adtm_end) //86400为一天的总秒数 If ld_sdate = ld_edate then ll_total_seconds = secondsafter( lt_stime,lt_etime) Elseif ld_sdate < ld_edate Then ll_total_seconds = SecondsAfter(lt_stime,Time('23:59:59')) ll_day_adjust = DaysAfter(ld_sdate,ld_edate) -1 If ll_day_adjust > 0 Then ll_total_seconds = ll_total_seconds + 86400 * ll_day_adjust ll_total_seconds = ll_total_seconds + SecondsAfter(Time('00:00:00'),lt_etime) +1 Else //end date < start date ll_total_seconds = SecondsAfter(lt_stime,Time('00:00:00')) ll_day_adjust = DaysAfter(ld_sdate,ld_edate) +1 If ll_day_adjust < 0 Then ll_total_seconds = ll_total_seconds + 86400 * ll_day_adjust ll_total_seconds = ll_total_seconds + SecondsAfter(Time('23:59:59'),lt_etime) -1 end If ll_total_seconds就是最终的秒数的差,然后除以3600就是小时了。OK、
|