标题:请教如何时间排序,取得最早时间和最晚时间?
只看楼主
ictest
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:325
专家分:114
注 册:2010-2-17
结帖率:69.81%
已结贴  问题点数:20 回复次数:5 
请教如何时间排序,取得最早时间和最晚时间?
有四个字符串:
a = "10:18 11:49 13:37 15:09 19:48 "
b = "08:29 18:19 18:20 18:23 "
c = "08:39 08:41 07:21 08:30 08:20 19:47 08:47 "
d = "14:48 16:07 15:48 19:20 14:10 00:00 "

请教如何用通用的、最少的语句(不用数据库)把每一个字符串里的时间排序,并且得到最早和最晚时间?

输出:

a---min:10:18---max:19:48
b---min:08:29---max:18:23
c---min:07:21---max:19:47
d---min:14:10---max:00:00
搜索更多相关主题的帖子: 时间 输出 排序 字符串 数据库 
2023-05-14 10:24
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4912
专家分:29900
注 册:2008-10-15
得分:10 
用控件吧。
listbox 支持排序,
写一个子函数来调用吧
还有一个最后一个是怎么回事?  00:00 ,不是最小吗??

程序代码:
Option Explicit

'窗体上放一个 listbox1 ,sotred 属性设为了 true
Private Type jg
    a As Variant
    b As Variant
End Type

Private Sub Command1_Click()
Dim j As jg
Dim a, b, c, d
a = "10:18 11:49 13:37 15:09 19:48 "
b = "08:29 18:19 18:20 18:23 "
c = "08:39 08:41 07:21 08:30 08:20 19:47 08:47 "
d = "14:48 16:07 15:48 19:20 14:10 00:00 "

j = minmax(a)
Print j.a, j.b
j = minmax(b)
Print j.a, j.b
j = minmax(c)
Print j.a, j.b
j = minmax(d)
Print j.a, j.b

End Sub

Private Function minmax(s As Variant) As jg
Dim f() As String
Dim i As Long
f = Split(s, " ")
List1.Clear
For i = 0 To UBound(f)
    If Len(f(i)) > 0 Then
        List1.AddItem f(i)
    End If
Next i
minmax.a = List1.List(0)
minmax.b = List1.List(List1.ListCount - 1)
End Function

授人于鱼,不如授人于渔
早已停用QQ了
2023-05-14 13:04
ictest
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:325
专家分:114
注 册:2010-2-17
得分:0 
以下是引用风吹过b在2023-5-14 13:04:14的发言:

用控件吧。
listbox 支持排序,
写一个子函数来调用吧
还有一个最后一个是怎么回事?  00:00 ,不是最小吗??

Option Explicit

'窗体上放一个 listbox1 ,sotred 属性设为了 true
Private Type jg
    a As Variant
    b As Variant
End Type

Private Sub Command1_Click()
Dim j As jg
Dim a, b, c, d
a = "10:18 11:49 13:37 15:09 19:48 "
b = "08:29 18:19 18:20 18:23 "
c = "08:39 08:41 07:21 08:30 08:20 19:47 08:47 "
d = "14:48 16:07 15:48 19:20 14:10 00:00 "

j = minmax(a)
Print j.a, j.b
j = minmax(b)
Print j.a, j.b
j = minmax(c)
Print j.a, j.b
j = minmax(d)
Print j.a, j.b

End Sub

Private Function minmax(s As Variant) As jg
Dim f() As String
Dim i As Long
f = Split(s, " ")
List1.Clear
For i = 0 To UBound(f)
    If Len(f(i)) > 0 Then
        List1.AddItem f(i)
    End If
Next i
minmax.a = List1.List(0)
minmax.b = List1.List(List1.ListCount - 1)
End Function



回复一下前辈:可以理解为班次,假设这个人今天上中班,班次时间标准为15:00——00:00,这个人上班到00:00班次结束,就算他加班到凌晨01:00,也算是前一天上班的最后时间。
2023-05-14 13:32
mrexcel
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:22
帖 子:125
专家分:480
注 册:2022-11-3
得分:10 
程序代码:
Sub Test()
Dim t(3) As String
a = "10:18 11:49 13:37 15:09 19:48 "
b = "08:29 18:19 18:20 18:23 "
c = "08:39 08:41 07:21 08:30 08:20 19:47 08:47 "
d = "14:48 16:07 15:48 19:20 14:10 00:00 "
With CreateObject("msscriptcontrol.scriptcontrol")
.Language = "javascript"
.addcode "function s(y){x=y.split(' ');x.sort();return x;}"
t(0) = "a=" & .eval("s('" & Trim(a) & "')")
t(1) = "b=" & .eval("s('" & Trim(b) & "')")
t(2) = "c=" & .eval("s('" & Trim(c) & "')")
t(3) = "d=" & .eval("s('" & Trim(d) & "')")
End With
MsgBox Join(t, vbCrLf)
End Sub
2023-05-15 21:56
cwa9958
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:67
帖 子:247
专家分:1228
注 册:2006-6-25
得分:0 
你这个提供的例子时间不是已经排序好了的吗?
只要取出第一个时间和最后一个时间就是了嘛。
2023-05-16 12:55
ictest
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:325
专家分:114
注 册:2010-2-17
得分:0 
回复 5楼 cwa9958
c = "08:39 08:41 07:21 08:30 08:20 19:47 08:47 "
没有排序过,只提取第一个时间和最后一个时间不对。谢谢。
2023-05-16 23:52



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-512195-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.051612 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved