以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  [求助]关于时间列的统计(已解决)  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=18340)

--  作者:rpg2813
--  发布时间:2012/4/10 0:50:00
--  [求助]关于时间列的统计(已解决)

如题,工作需要,我需要对时间列进行汇总、小计、统计

时间的格式为[hh]:mm

没有秒、年月日的说,23:01+1:59=25:00

现在累计值只能算数字

我的想法是把时间转换成数字?然后汇总时再转换回来?

不知道集体应该如何做?或者更好的方法?

[此贴子已经被作者于2012-4-15 13:33:04编辑过]

--  作者:wuhuar
--  发布时间:2012/4/10 8:24:00
--  

Dim time1,time2 As String
Dim t1,t2 As Integer
time1="23:01"
time2="1:59"

t1=Cint(mid(time1,1,Instr(time1,":")-1))*60+Cint(mid(time1,Instr(time1,":")+1,2))
t2=Cint(mid(time2,1,Instr(time2,":")-1))*60+Cint(mid(time2,Instr(time2,":")+1,2))
output.show(t1+t2)

 

转换为分钟,后面你自己再转为小时+分钟就OK了,其实很多时间数据结构很重要


--  作者:狐狸爸爸
--  发布时间:2012/4/10 9:45:00
--  

必须先转换为数字,然后统计,得出结果后,将数字转换为时间。

Dim sum As Double
For Each dr As DataRow In DataTables("表A").DataRows
    If dr.IsNull("时间") = False Then
       Dim v As Integer = math.Floor(dr("时间"))
        sum = sum + v * 60 + (dr("时间") - v) * 100
    End If
Next
Dim h As Integer = sum \\ 60
Dim m As Integer = sum - h * 60
Return h & ":" & Format(m,"00")


--  作者:rpg2813
--  发布时间:2012/4/13 20:58:00
--  
以下是引用狐狸爸爸在2012-4-10 9:45:00的发言:

必须先转换为数字,然后统计,得出结果后,将数字转换为时间。

Dim sum As Double
For Each dr As DataRow In DataTables("表A").DataRows
    If dr.IsNull("时间") = False Then
       Dim v As Integer = math.Floor(dr("时间"))
        sum = sum + v * 60 + (dr("时间") - v) * 100
    End If
Next
Dim h As Integer = sum \\ 60
Dim m As Integer = sum - h * 60
Return h & ":" & Format(m,"00")

试了代码不行

我现在在表A有一列时间列time格式,我希望第二列为数字列,能把时间列算成分钟数

[此贴子已经被作者于2012-4-13 20:58:29编辑过]

--  作者:rpg2813
--  发布时间:2012/4/14 16:48:00
--  
人工置顶……
--  作者:rpg2813
--  发布时间:2012/4/15 12:57:00
--  
只有再顶了……
--  作者:rpg2813
--  发布时间:2012/4/15 13:33:00
--  

ok,搞定了

时间列为日期型,time;转换列为整数,就是把10:10这种时间格式转换为610分钟

我从vb的代码里找到的思路……希望大大把这个加到帮助吧,我搜索了论坛的帖子,挺多人找这个东西的说

如果帮助已经有了的话……额,那只能怪我没细看吧……

 

e.DataRow("转换") =Hour(e.DataRow("时间"))*60+Minute(e.DataRow("时间"))