2,462
社区成员
发帖
与我相关
我的任务
分享
Private Sub Command1_Click()
Dim s$, i&
Debug.Print "“整点”测试:"
For i = 0 To 23
s = i & ":00"
Debug.Print s, CDate(Fix(CDate(s) * 48) / 48)
Next
Debug.Print "“半点”测试:"
For i = 0 To 23
s = i & ":30"
Debug.Print s, CDate(Fix(CDate(s) * 48) / 48)
Next
End Sub
但是这样的结果有问题啊。
有一些地方会“相差半小时”。
“整点”测试:
0:00 0:00:00
1:00 0:30:00
2:00 1:30:00
3:00 3:00:00
4:00 3:30:00
5:00 5:00:00
6:00 6:00:00
7:00 7:00:00
8:00 7:30:00
9:00 9:00:00
10:00 10:00:00
11:00 10:30:00
12:00 12:00:00
13:00 12:30:00
14:00 14:00:00
15:00 15:00:00
16:00 15:30:00
17:00 17:00:00
18:00 18:00:00
19:00 18:30:00
20:00 20:00:00
21:00 21:00:00
22:00 21:30:00
23:00 23:00:00
“半点”测试:
0:30 0:00:00
1:30 1:30:00
2:30 2:30:00
3:30 3:30:00
4:30 4:30:00
5:30 5:00:00
6:30 6:00:00
7:30 7:30:00
8:30 8:30:00
9:30 9:00:00
10:30 10:30:00
11:30 11:30:00
12:30 12:30:00
13:30 13:30:00
14:30 14:00:00
15:30 15:30:00
16:30 16:30:00
17:30 17:00:00
18:30 18:30:00
19:30 19:30:00
20:30 20:00:00
21:30 21:30:00
22:30 22:30:00
23:30 23:00:00
Option Explicit
Sub Main()
Debug.Print CDate(Fix(CDate("18:15") * 48) / 48)
Debug.Print CDate(Fix(CDate("18:45") * 48) / 48)
End Sub
18:00:00
18:30:00
Option Explicit
Private Function FixTime(ByVal sTime As String) As String
Dim h As Long
h = Hour(sTime)
If (Minute(sTime) >= 30) Then
sTime = h & ":30"
Else
sTime = h & ":00"
End If
FixTime = sTime
End Function
Private Sub Command1_Click()
MsgBox FixTime("18:15"), 64 ' 18:00
MsgBox FixTime("18:30"), 64 ' 18:30
MsgBox FixTime("18:45"), 64 ' 18:30
End Sub