如何实现将时间累加

zzzz1324 2004-10-15 10:03:54
我现在做一套职工签到系统,现在不知道如何实现:每天一个人出去几次,如何将这个人的所有出去时间都累加起来。具体如何操作呢。谢谢了。
...全文
168 点赞 收藏 17
写回复
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
51365133 2004-10-20
Function Convtime(date1 As Date, date2 As Date) As String
'
'功能 : 计算二个时间的时间差
'
'参数 : date1 是较早的时间, Variant (Date)。
' date2 是较晚的时间, Variant (Date)。
'
'若要计算两个日期之时间差,计算顺序是从 date1 到 date2
'
'返回值 : 时间差的组合字串, 例如 2年21天13小时5分钟3秒
'
Dim wsecond As Long '总秒数 / 剩余秒数
Dim wminute As Long '总分钟数 / 剩余分钟数
Dim whour As Long '总时数 / 剩余时数
Dim wday As Long '总天数 / 剩余天数
Dim wyear As Long '总年数

wsecond = DateDiff("s", date1, date2) '总秒数
If wsecond > 60 Then
wminute = wsecond \ 60 '总分钟数
wsecond = wsecond Mod 60 '计算剩余秒数
End If
If wminute > 60 Then
whour = wminute \ 60 '总时数
wminute = wminute Mod 60 '计算剩余分钟数
End If
If whour > 24 Then
wday = whour \ 24 '总天数
whour = whour Mod 24 '计算剩余时数
End If
If wday > 365 Then
wyear = wday \ 365 '总年数
wday = wday Mod 365 '计算剩余天数
End If

'拼凑计算结果字串
If wyear > 0 Then Convtime = Convtime & wyear & "年"
If wday > 0 Then Convtime = Convtime & wday & "天"
If whour > 0 Then Convtime = Convtime & whour & "小时"
If wminute > 0 Then Convtime = Convtime & wminute & "分钟"
If wsecond > 0 Then Convtime = Convtime & wsecond & "秒"
End Function

里边改点就行了
回复
51365133 2004-10-20
同意楼上
DateDiff("s", a1, a2) + DateDiff("s", b1, b2)
回复
a达哥a 2004-10-19
午夜逛街的方法最实在, 最易懂
回复
fly_higher 2004-10-19
楼上已经很多方法了!
回复
junki 2004-10-19
不知道楼主这两个时间(出去时间,进来时间)是否有记录
如有的话,可以这样

Dim TimeOut As String'出去时刻表
Dim TimeIn As String'进来时刻表
Dim MinOut As Integer'出去的时间(3:25:00=3*60+25)
Dim MinIn As Integer'进来的时间(5:30:20=5*60+30)
Dim MinuteNum As Integer 'MinIn-MinOut

首先取得TimeOut 和 TimeIn的值

MinOut=ConVerSionMin(TimeOut,1)*60 + ConVerSionMin(TimeOut,2) 'ConVerSionMin根据冒号的位置取得小时数和分钟数
MinIn=ConVerSionMin(TimeIn,1)*60 + ConVerSionMin(TimeIn,2)
MinuteNum = MinIn-MinOut'得到出去一次所用的时间
回复
QWERT520 2004-10-19
Dim outTime, intTime, ID '一个员工出、进时间,ID号
sql = "select * from table1 datediff(hour,outtime,intime) as toTime"
sql = "select * from table2 where id='1'" '判断员工进出时间
sql = "insert into table2 toTime='" & 本次用的时间 & "'" '如果不出过插入时间
sql = "update tabel2 set toTime=上次时间+本次时间 wher id='1' " '如果出去过修改时间
sql = "select sum(totime) from table2 where id='1' " '统计时间
回复
andyfr1210 2004-10-16
把对应 的时间用下datediff函数不就可以了吗?
回复
jam021 2004-10-15
关注,帮你顶!
回复
tztz520 2004-10-15
'这样可以得到
Private Sub Command3_Click()
Dim a1 As Date, a2 As Date, b1 As Date, b2 As Date
Dim timeCount As Date
Dim xx As Single, hh As Long, mm As Long, ss As Long
a1 = #1:06:28 PM# '第一次出去
a2 = #3:56:01 PM# '回来
b1 = #4:06:18 PM# '第二次出去
b2 = #5:12:01 PM# '回来

xx = DateDiff("s", a1, a2) + DateDiff("s", b1, b2)
hh = Int(xx / 3600)
mm = Int((xx - 3600 * hh) / 60)
ss = xx - hh * 3600 - mm * 60
timeCount = Format(hh & ":" & mm & ":" & ss, "hh:mm:ss")
MsgBox "出去时间总共为:" & timeCount
End Sub
回复
victorycyz 2004-10-15
T (EmpID,OutTime,Intime) --员工ID,出去时间,进来时间

select EmpID,sum(datediff(hour,outtime,intime)) as TotalTime, count(*) as OutTimes
from T
group by EmpID
回复
zzzz1324 2004-10-15
就是,一个人一天出去回来了,然后又出去了回来了。着不是两个时间段吗,想把这两个时间段都累加起来,计算出他总共出去的时间。如何实现。
回复
starsoulxp 2004-10-15
把出去的时间累加起来?不明白?
回复
zzzz1324 2004-10-15
怎么没有人回复呢
回复
hanaichun 2004-10-15
关注,帮你顶!
回复
aiur2000 2004-10-15
不如用本公司的门禁考勤系统吧,www.szoptec.com。呵呵,竟然来推销了,要是有人记录了时间,并手动输入到电脑中,上面各位已经解决了。
回复
lyadlysysT 2004-10-15
在数据库中定义一个Varchar的字段进行存储出入时间
然后一天要出去很多次每次都以"|"分隔写入数据库
例如:第一次#1:06:28 PM#,第二次 #3:56:01 PM#
保存如数据中是“#1:06:28 PM#| #3:56:01 PM#|”
用的时候再把取出来进行计算
回复
lyadlysysT 2004-10-15
在数据库中定义一个Varchar的字段进行存储出入事件
然后一天要出去很多次每次都以"|"分隔写入数据库
例如:第一次#1:06:28 PM#,第二次 #3:56:01 PM#
保存如数据中是“#1:06:28 PM#| #3:56:01 PM#|”
用的时候再把取出来进行计算
回复
发动态
发帖子

1180

社区成员

VB 数据库(包含打印,安装,报表)
申请成为版主
社区公告
暂无公告