以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  关于时段列负数问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=26858)

--  作者:netfox168
--  发布时间:2012/12/15 22:19:00
--  关于时段列负数问题

参考帮助里的“时段列与计算”一节,设置了计算两列间的时间段代码(如下示)。但有个问题,如果跨越24时的时间段会产生负数的结果,比如起始时间为23:30,结束时间为第二天凌晨0:30,结果应为1小时,但实际出来的结果为 -23小时。应如何解决?

 

还有一个问题,如果结果为整小时的,它就不显示分位,比如6小时就显示 06 而不是06:00 。

 

Select Case e.DataCol.name
    Case "起始时间","结束时间"
        Dim dr As DataRow = e.DataRow
        If dr.IsNull("起始时间") Or dr.IsNull("结束时间") Then
           dr("本次用时") = Nothing
        Else
            Dim tp As TimeSpan
            tp = dr("结束时间") - dr("起始时间")
            dr("本次用时") = tp.TotalSeconds() \'真正的时段型数据要转换为秒数,才能存入时段列
        End
If

End
Select


--  作者:狐狸爸爸
--  发布时间:2012/12/17 8:06:00
--  

Select Case e.DataCol.name
    Case "起始时间","结束时间"
        Dim dr As DataRow = e.DataRow
        If dr.IsNull("起始时间") Or dr.IsNull("结束时间") Then
            dr("本次用时") = Nothing
        Else
            Dim tp As TimeSpan
            tp = dr("结束时间") - dr("起始时间")
            If tp.TotalSeconds < 0 Then
                tp.add(new timespan(24,0,0))
            End If
            dr("本次用时") = tp.TotalSeconds() \'真正的时段型数据要转换为秒数,才能存入时段列
        End If
End Select


--  作者:netfox168
--  发布时间:2012/12/17 9:42:00
--  

此问题昨天通过摸索自己解决了,我设置了参数 tp2(1,0,0,0) ,当 tp1<0 时就 tp1.add(tp2).totalseconds. 这也行,哈哈...

不过还是感谢狐爸的帮助,你这个更简洁。学习了!