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

jt80 2004-05-11 11:41:27
我正在做一个考试系统,其中有一个功能是计算考试所用的时间,也就是考试结束时间减去开始的时间,可是用VB如何实现啊~小弟先谢谢了,最好能提供源代码~~
...全文
177 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

7,789

社区成员

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

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