以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  请教出勤时数近似求整计算  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=138043)

--  作者:wakai
--  发布时间:2019/7/22 0:27:00
--  请教出勤时数近似求整计算
 按帮助里的时段计算,代码如下
Case "上午上班","下午下班"
        If dr.IsNull("上午上班") Or dr.IsNull("下午下班") Then
            dr("出勤时数") = Nothing
        Else
            Dim tp As TimeSpan
            tp = dr("下午下班") - dr("上午上班")
            dr("出勤时数") = tp.TotalHours() \'真正的时段型数据要转换为秒数,才能存入时段列
        End If
会出现多余的分钟数导致有小数不一

要实现如上班上班<=8:00,按8:00
下午下班>=17:00按17:00点计算,请教老师要怎么写代码

--  作者:有点蓝
--  发布时间:2019/7/22 8:43:00
--  
Case "上午上班","下午下班"
        If dr.IsNull("上午上班") Or dr.IsNull("下午下班") Then
            dr("出勤时数") = Nothing
        Else
            Dim tp As TimeSpan
dim d1 as date = dr("上午上班")
if format(d1,"HH:mm") < "08:00" then d1 = cdate(format(d1,"yyyy-MM-dd 08:00"))
dim d2 as date = dr("下午下班"")
if format(d2,"HH:mm") > "17:00" then d2 = cdate(format(d2,"yyyy-MM-dd 17:00"))
            tp = d2 - d1
            dr("出勤时数") = tp.TotalHours() \'真正的时段型数据要转换为秒数,才能存入时段列
        End If
[此贴子已经被作者于2019/7/23 9:04:00编辑过]

--  作者:wakai
--  发布时间:2019/7/22 23:03:00
--  
蓝老师,上午上班那个时段可以,
下午下班那个不行呢,大于或小于17点的,显示的都是实际时间,不是17:00,是因为24小时制原因吗

--  作者:wakai
--  发布时间:2019/7/22 23:21:00
--  
可以了,改为24小时HH