猴哥 ! 你教我时间相加的方法有问题呀......

dazhi518 2010-06-10 09:11:04
如下面:

Dim s As Date
s = TimeValue("08:00:00") + TimeValue("20:00:00")
Print Format(s, "hh:mm:ss")

这两个时间相加.超过24小时了..输出的是"04:00:00" 结果应该是"28:00:00"才对呀...
...全文
120 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2010-06-11
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 dazhi518 的回复:]
我要实现的问题是..数据库里有一个字段是:

实际工时
00:32:12
01:32:09
02:49:16
04:08:06
....
....
如果把这些时间加起来那是肯定会超过24小时的... 该怎么做呀..有没有别的方法...谢谢...
[/Quote]
Dim hms(1 To 4) As String
Dim total As Double
Dim i As Integer
hms(1) = "00:32:12"
hms(2) = "01:32:09"
hms(3) = "08:49:16"
hms(4) = "23:08:06" '注意小时数不能>24
total = 0#
For i = 1 To 4
total = total + CDate(hms(i))
Next
Debug.Print CStr(Fix(total * 24#)) + ":" + Format(Minute(total), "00") + ":" + Format(Second(total), "00")
输出
34:01:43
ivy13579 2010-06-11
  • 打赏
  • 举报
回复
mark
dazhi518 2010-06-10
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 chinaboyzyq 的回复:]
s3 = DateDiff("H", s1, s) & ":" & Right(s, 5)

[/Quote]

就是看不懂中间的那个 S1 到底有什么用...
DateDiff(interval, date1, date2)
MSDN说 Date1□date2 必要;Variant (Date)。计算中要用到的两个日期。
可S1并没有值..只是声明了而已呀...我该怎么理解...
dazhi518 2010-06-10
  • 打赏
  • 举报
回复
谢谢各位....我得改改学习方法啦...我的程式总是代码很多..语言不简明...
dazhi518 2010-06-10
  • 打赏
  • 举报
回复
我也不知道该用怎么样的方法去表示...假如时间的多的话.100多个小时...我们习惯上就说100个小时..
因为再多时间,,我们也以小时为单位..来表示...
三断笛 2010-06-10
  • 打赏
  • 举报
回复
转换成分钟计算嘛,然后再转回小时
zm03173225 2010-06-10
  • 打赏
  • 举报
回复
我觉得LZ应该好好考虑下这种表现方式和计算方法,当记录越来越多时肯定不是一个好的解决办法
chinaboyzyq 2010-06-10
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 zm03173225 的回复:]

我觉得这本身就有问题,就不应该用HH:MM:SS这种形式去表现,到最后岂不是要变成XXXXXXX:MM:SS
[/Quote]
呵呵,这正是楼主想要的。
zm03173225 2010-06-10
  • 打赏
  • 举报
回复
我觉得这本身就有问题,就不应该用HH:MM:SS这种形式去表现,到最后岂不是要变成XXXXXXX:MM:SS
赵4老师 2010-06-10
  • 打赏
  • 举报
回复
Dim s As Double
Dim d As Date
d = CDate("2010-6-10 9:0:0")
Debug.Print Format(d, "YYYY-MM-DD hh:mm:ss")
s = 8 / 24# + 20 / 24#
Debug.Print s * 24#
d = d + s
Debug.Print Format(d, "YYYY-MM-DD hh:mm:ss")
输出
2010-06-10 09:00:00
28
2010-06-11 13:00:00
chinaboyzyq 2010-06-10
  • 打赏
  • 举报
回复
你真得想要28:00:00这样的时间?

复制以下代码去测试:

Private Sub Command1_Click()
Dim s As Date, s1 As Date, s3 As String
s = TimeValue("08:03:00") + TimeValue("20:00:05")
s3 = DateDiff("H", s1, s) & ":" & Right(s, 5)

MsgBox s3
End Sub

要会举一反三,要多动脑子。
dazhi518 2010-06-10
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 chinaboyzyq 的回复:]
s = TimeValue("08:00:00") + TimeValue("20:00:00")
MsgBox DateDiff("H", s1, s)

[/Quote]
第二句..看了好几天,,,就是看不懂...真晕...脑子卡这了...
dazhi518 2010-06-10
  • 打赏
  • 举报
回复
我要实现的问题是..数据库里有一个字段是:

实际工时
00:32:12
01:32:09
02:49:16
04:08:06
....
....
如果把这些时间加起来那是肯定会超过24小时的... 该怎么做呀..有没有别的方法...谢谢...
赵4老师 2010-06-10
  • 打赏
  • 举报
回复
COleDateTime
COleDateTimeSpan
chinaboyzyq 2010-06-10
  • 打赏
  • 举报
回复
不是我教你的有问题,而是你使用的有问题,大于24小会多出一天,你见过28:00:00这样的时间?

Private Sub Command1_Click()
Dim s As Date
Dim s1 As Date

s = TimeValue("08:00:00") + TimeValue("20:00:00")
MsgBox DateDiff("H", s1, s)

End Sub

dazhi518 2010-06-10
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 luofenghen 的回复:]


如果要是28的话 Dim s As ……
[/Quote]

改成dim s as string 这样也不行....
luofenghen 2010-06-10
  • 打赏
  • 举报
回复
[Quote=引用楼主 dazhi518 的回复:]
如下面:

Dim s As Date
s = TimeValue("08:00:00") + TimeValue("20:00:00")
Print Format(s, "hh:mm:ss")

这两个时间相加.超过24小时了..输出的是"04:00:00" 结果应该是"28:00:00"才对呀...
[/Quote]
如果要是28的话 Dim s As Date改成 Dim s As string
zm03173225 2010-06-10
  • 打赏
  • 举报
回复
怎么可能有28呢 最多23:59:59啊

1,216

社区成员

发帖
与我相关
我的任务
社区描述
VB 数据库(包含打印,安装,报表)
社区管理员
  • 数据库(包含打印,安装,报表)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧