标题:请教下各位大大:有没有体育项目秒表时间的加减算法?
只看楼主
shonken
Rank: 2
等 级:论坛游民
帖 子:95
专家分:21
注 册:2017-1-15
结帖率:86.67%
已结贴  问题点数:20 回复次数:36 
请教下各位大大:有没有体育项目秒表时间的加减算法?
近期想设计个体育项目时间成绩的小工具,秒表成绩一般为:时:分:秒.999,根据运动员的表现增减时间,这个增减可能是毫秒,也可能是秒或其他

示例:0:10:10.123    +  1.123             = 0:10:11.246
          0:10:10.123    +  1:1.123        = 0:11:11.246
          0:10:10.123    +  1:1:1.123   = 1:11:11.246

          1:10:10.123    -  1.124             = 1:10:09.998
          1:10:10.123    -  11:1.124      = 1:09:59.998

计划做成函数应该是:函数名(当前成绩,"+1.123"),函数名(当前成绩,"-  1.124")

不知各位有什么好办法实现这个时间的运算?
搜索更多相关主题的帖子: 成绩 项目 秒表 时间 函数 
2022-07-07 20:30
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:323
帖 子:9621
专家分:26174
注 册:2012-2-5
得分:0 
         1:10:10.123    -  1.124             = 1:10:09.998
          1:10:10.123    -  11:1.124      = 1:09:59.998
上面两个结果看不明白

[此贴子已经被作者于2022-7-7 21:11编辑过]


坚守VFP最后的阵地
2022-07-07 21:00
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:323
帖 子:9621
专家分:26174
注 册:2012-2-5
得分:0 
CLEAR
t1 = "0:10:10.123"
t2 = "+1:1.123"
?ALINES(a1, t1, 5, ":", ".")
LIST MEMORY LIKE a1
?ALINES(a2, t2, 5, "+", ":", ".")
LIST MEMORY LIKE a2

坚守VFP最后的阵地
2022-07-07 21:20
shonken
Rank: 2
等 级:论坛游民
帖 子:95
专家分:21
注 册:2017-1-15
得分:0 
以下是引用sdta在2022-7-7 21:00:28的发言:

         1:10:10.123    -  1.124             = 1:10:09.998
          1:10:10.123    -  11:1.124      = 1:09:59.998
上面两个结果看不明白

设想这样也不知是否正确,即毫秒十进制,秒和分是60进制,小时是24进制
2022-07-07 21:28
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:323
帖 子:9621
专家分:26174
注 册:2012-2-5
得分:0 
1秒=1000毫秒

坚守VFP最后的阵地
2022-07-07 21:38
my2318
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:12
帖 子:233
专家分:577
注 册:2014-3-18
得分:0 
内部运算时全部用几点几秒表示,输出输入结果用几小时:几分:几.几秒表示,写一个输出转换函数和一个输入转换函数,这两个函数比较简单,自己写一下就好了。
2022-07-07 21:40
csyx
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:29
帖 子:484
专家分:1827
注 册:2018-3-13
得分:0 
你只需要从传入参数中分解出时、分、秒、毫秒的值,加减运算交给vfp去处理,例如:
datetime(1900,1,2,3,4,5)    结果是 1900-01-02 3:04:05
datetime(1900,1,2,3,4,5)+6  结果是 1900-01-02 3:04:11
ttoc(datetime(1900,1,2,3,4,5)+6, 2)  结果是 3:04:11
你对毫秒进行些处理即可
2022-07-07 22:53
shonken
Rank: 2
等 级:论坛游民
帖 子:95
专家分:21
注 册:2017-1-15
得分:0 
以下是引用csyx在2022-7-7 22:53:52的发言:

你只需要从传入参数中分解出时、分、秒、毫秒的值,加减运算交给vfp去处理,例如:
datetime(1900,1,2,3,4,5)    结果是 1900-01-02 3:04:05
datetime(1900,1,2,3,4,5)+6  结果是 1900-01-02 3:04:11
ttoc(datetime(1900,1,2,3,4,5)+6, 2)  结果是 3:04:11
你对毫秒进行些处理即可


我也是想通过日期时间来处理,谢谢你提供具体方法
2022-07-08 09:30
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:190
帖 子:3125
专家分:8340
注 册:2015-3-25
得分:0 
楼主是想这样
HH:MM:SS.SSS的格式显示,加减也是按照HH:MM:SS.SSS的格式

你先这样,标准化你的参数,其他的,就容易了
HMSX = "1:2.1234"

*!* 取HHMMSS.SSS的.后面的前面3位
SSS = SUBSTR(IIF(RAT(".",HMSX)>0,SUBSTR(HMSX,RAT(".",HMSX)+1),"000"),1,3)

*!* 分别取HHMMSS中的SS,MM,HH
HMS = IIF(RAT(".",HMSX)=0,HMSX,SUBSTR(HMSX,1,RAT(".",HMSX)-1))
HMS = CHRTRAN(HMS,".","") && 防止HMS中还有"点"
SS = PADL(SUBSTR(IIF(RAT(":",HMS)>0,SUBSTR(HMS,RAT(":",HMS)+1),HMS),1,2),2,"0")
HM = IIF(RAT(":",HMS)=0,"00",SUBSTR(HMS,1,RAT(":",HMS)-1))
MM = PADL(SUBSTR(IIF(RAT(":",HM)>0,SUBSTR(HM,RAT(":",HM)+1),HM),1,2),2,"0")
HH = PADL(SUBSTR(IIF(RAT(":",HM)=0,"00",SUBSTR(HM,1,RAT(":",HM)-1)),1,2),2,"0")

?"前=",HMSX
?"后="+HH+";"+MM+";"+SS+"."+SSS
2022-07-08 10:19
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:190
帖 子:3125
专家分:8340
注 册:2015-3-25
得分:0 
经过上面标准化你参数后,你就可以,这样写个函数
函数名("当前成绩","+/-","修改数值")
2022-07-08 10:34



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




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

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