大家帮忙来看看,小弟不胜感激~~

jt80 2004-05-11 11:41:27
我正在做一个考试系统,其中有一个功能是计算考试所用的时间,也就是考试结束时间减去开始的时间,可是用VB如何实现啊~小弟先谢谢了,最好能提供源代码~~
...全文
122 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
douhapy 2004-05-12
  • 打赏
  • 举报
回复
如上:新建工程,在窗体上添加Command控件,将代码赋知道窗体的代码框中即可。
douhapy 2004-05-12
  • 打赏
  • 举报
回复
Private Declare Function timeGetTime Lib "winmm.dll" () As Long

Dim timeTick As Long '答题开始后所经历的毫秒数

Private Sub Form_Load()
Command1.Caption = "开始答题"
End Sub

Private Sub Command1_Click()
Select Case Command1.Caption
Case "开始答题"
timeTick = timeGetTime
Command1.Caption = "结束答题"

Case "结束答题"
timeTick = timeGetTime - timeTick

MsgBox "你答题所花的时间是" & timeTick & "毫秒!" & vbCrLf & "即 " & TimeString(timeTick)

Command1.Caption = "开始答题"
End Select

End Sub


Function TimeString(timeTick As Long) As String
Dim H As Integer
Dim M As Integer
Dim S As Integer
Dim mS As Integer

Dim returnStr As String

returnStr = ""

mS = timeTick Mod 1000

S = (timeTick - mS) / 1000

If S < 60 Then
M = 0: H = 0
Else
M = S / 60: S = S - M * 60

If M < 60 Then
H = 0
Else
H = M / 60: M = M - H * 60

If H >= 24 Then
returnStr = "无法告诉你,你考试的时间也太长了吧!"
End If
End If
End If

If returnStr = "" Then
returnStr = H & "小时" & M & "分" & S & "秒" & mS & "毫秒"
End If

TimeString = returnStr
End Function
northwolves 2004-05-12
  • 打赏
  • 举报
回复
Private Sub Command1_Click()
Dim starttime As Date, endtime As Date
starttime = Now - 0.05
endtime = Now - 0.01
MsgBox "考试用时 " & Format(TimeSerial(0, 0, DateDiff("s", starttime, endtime)), "h 小时 n 分 s 秒")
End Sub
yinweihong 2004-05-12
  • 打赏
  • 举报
回复
呵呵
猩猩都来了
wumy_ld 2004-05-12
  • 打赏
  • 举报
回复
timer控件太不精确了,以下是使用api函数的计时:
Option Explicit
Private Declare Function GetTickCount Lib "kernel32" () As Long
Dim mintMinutes As Integer '逝去的分钟数

Private Sub cmdBegin_Click()
Do
TimeDelay 1000 '每一次延时1分钟
Loop Until mintMinutes >= 60 '总共60分钟

MsgBox "时间到,请马上停止答题!", vbInformation, "提示"
End Sub

Private Sub Form_Load()
cmdBegin.Caption = "开始计时"
End Sub

'等待过去多长时间,以毫秒计
Public Sub TimeDelay(DT As Long)
Dim TT As Long
TT = GetTickCount()
Do
DoEvents
DoEvents
If GetTickCount - TT < 0 Then TT = GetTickCount
Loop Until GetTickCount - TT >= DT

mintMinutes = mintMinutes + 1 '计数器加1
End Sub
yoki 2004-05-12
  • 打赏
  • 举报
回复
同意楼上的,如果要精确点,可以将Timer1.Interval设小点
射天狼 2004-05-12
  • 打赏
  • 举报
回复
建议用TIMER来模拟,不要用计算机的当前时间来计算,如果人为改计算机时间,你的程序启不是永远也不会到时间~~~~~~~~

Option Explicit

Dim lngTime As Long

Private Sub Form_Load()
Timer1.Interval = 60000 '将时间设置为1分钟
End Sub

Private Sub Timer1_Timer()
lngTime = lngTime + 1
If lngTime = 60 Then '这是60分钟,也就是一个小时
MsgBox "考试时间到,请停止答题!"
End If
End Sub
online 2004-05-11
  • 打赏
  • 举报
回复
同意楼上的

贴一段用于倒计时的

Option Explicit
Dim Hour_Int As Integer
Dim Minute_Int As Integer
Dim Second_Int As Integer
Dim S_Str As String
Dim M_Str As String
Dim H_Str As String
Dim Time_Str As String

' 开始倒计时
Private Sub Command1_Click()
Timer1.Enabled = True
Command2.Enabled = True
End Sub

' 暂停倒计时
Private Sub Command2_Click()
Timer1.Enabled = Not Timer1.Enabled
Select Case Timer1.Enabled
Case True
Command2.Caption = "暂停"
Case False
Command2.Caption = "继续"
End Select
End Sub

' 退出
Private Sub Command3_Click()
End
End Sub

Sub Form_Load()
Hour_Int = 0
Minute_Int = 30
Second_Int = 0
Timer1.Interval = 1000
Timer1.Enabled = False
Command2.Enabled = False
End Sub

' 倒计时
Sub Timer1_Timer()
' 显示剩余时间
S_Str = IIf(Second_Int < 10, "0" & Second_Int, "" & Second_Int)
M_Str = IIf(Minute_Int < 10, "0" & Minute_Int, "" & Minute_Int)
H_Str = IIf(Hour_Int < 10, "0" & Hour_Int, "" & Hour_Int)
Time_Str = H_Str & ":" & M_Str & ":" & S_Str
Label1.Caption = Time_Str

Second_Int = Second_Int - 1
If Hour_Int = 0 And Minute_Int = 0 And Second_Int = -1 Then
MsgBox "时间到!!!"
End If
If Second_Int = -1 And Minute_Int > 0 Then
Minute_Int = Minute_Int - 1
Second_Int = 59
End If
If Minute_Int = 0 And Hour_Int > 0 Then
Hour_Int = Hour_Int - 1
Minute_Int = 59
End If
End Sub

supergreenbean 2004-05-11
  • 打赏
  • 举报
回复
比如说这样
Option Explicit
Private m_dStartTime As Date

Private Sub cmd结束考试_Click()
Dim dTime As Date
dTime = Now - m_dStartTime
Debug.Print "历时:" & dTime
End Sub

Private Sub Form_Load()
m_dStartTime = Now
End Sub
枫林网络-枫林音乐吧-伤感音乐厅V1.2 V1.2更新内容: 1.解决歌曲播放顺序始终不变的问题!(详情请看是下面) 2.修改了以前的版不能对齐的BUG 3.整合了在线音乐下载系统(与雅虎数据同步!) 4.加入了友情链接系统(请在LINK.HTML里修改) 5.加入了网站导航系统(可在头部文件HEAD.ASP里修改) ...... 还有些更新请自己去发现! 本程序为我个人收集相关资料,经本人改版的一套音乐在线网站程序,本程序并非小偷程序,需要自己更新,后台可以添加歌曲. 本程序设有4个广告位,如果想要添加可以在index.asp里面添加! 广告文件都在JS文件夹里. ad1.js是网站顶部468*60广告; ad2.js是播放器上方725*15广告(这里我设置的大小是800*30,可根据情况自己修改) ad3.js是播放器右侧160*600广告(这里我设置的大小是180*600,可根据情况自己修改) ad4.js是播放器底部760*90广告(这里我设置的大小是800*90,可根据情况自己修改) 网站信息修改很简单,需要修改的地方不多! 后台登陆地址:http://你的域名/login.asp 后台默认帐号和密码都是admin 修改后台密码请在数据库(#mymusic.mdb)里修改后再上传到空间! 为了安全起见请将#mymusic.mdb文件名改成一个比较复杂的名字,以免别人盗取贵站数据,如果改了这个文件名,那么也要到CONN.ASP里把文件里的#mymusic.mdb改成你刚才改的文件名! 有什么问题请到本程序交流论坛提出! 论坛地址:http://bbs.mp3-yy.cn 你的问题会在第一时间得到解决! 最后,用了本程序的希望做好本站友情!谢谢合作! 关于V1.2更新1的详情: 以前每次更新的歌曲都排在了以前歌曲的后面,这样就导致了每次更新都不能显现出来,所以这一次我改成了增加歌曲随机,这样加入歌曲后有时会排到前面去,我现在还没有想到办法让每次更新都自动排到最前面,如果那位高手知道如何实现请给小弟一点提示,小弟不胜感激!(QQ:860300187)

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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