|
|
#33
mywisdom882022-07-10 00:43
土方法,硬拼
CLEAR
c当前 = "32:20:9.419"
c加减 = "-1:8.412"
?c当前
?c加减
?秒表(c当前,c加减)
FUNCTION 秒表(c当前成绩,c加减成绩)
LOCAL c加减,c变动成绩
c当前成绩 = 标准格式(c当前成绩)
IF OCCURS(".",c加减成绩) > 1
MESSAGEBOX("加减成绩格式错误,最少包含2个“.”以上!",48,"提示")
RETURN c当前成绩
ELSE
c加减 = SUBSTR(c加减成绩,1,1)
IF c加减 = "-" && 第一个字符是 -
c变动成绩 = SUBSTR(c加减成绩,2)
c变动成绩 = 标准格式(c变动成绩)
RETURN 减少加时间(c当前成绩,c变动成绩)
ELSE
IF INLIST(c加减 , "+" ,":") && 第一个字符是 +或者:
c变动成绩 = SUBSTR(c加减成绩,2)
ELSE
c变动成绩 = c加减成绩
ENDIF
c变动成绩 = 标准格式(c变动成绩)
RETURN 增加时间(c当前成绩,c变动成绩)
ENDIF
ENDIF
ENDFUNC
FUNCTION 标准格式(HMSX)
*!* 标准格式 HH:MM:SS.SSS 格式
LOCAL FH,HH,MM,SS,SSS
IF INLIST(SUBSTR(HMSX,1,1),"+","-")
FH = SUBSTR(HMSX,1,1)
HMSX = SUBSTR(HMSX,2)
ELSE
FH = ""
ENDIF
*!* 取HHMMSS.SSS的.后面的前面3位
SSS = PADL(SUBSTR(IIF(RAT(".",HMSX)>0,SUBSTR(HMSX,RAT(".",HMSX)+1),"000"),1,3),3,"0")
*!* 分别取HHMMSS中的SS,MM,HH
HMS = IIF(RAT(".",HMSX)=0,HMSX,SUBSTR(HMSX,1,RAT(".",HMSX)-1))
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")
RETURN FH + HH + ":" + MM + ":" + SS + "." + SSS
ENDFUNC
FUNCTION 增加时间(c当前成绩,c变动成绩)
LOCAL HH,HH1,HH2,MM,MM1,MM2,SS,SS1,SS2,SSS,SSS1,SS2
HH1 = INT(VAL(SUBSTR(c当前成绩,1,2)))
MM1 = INT(VAL(SUBSTR(c当前成绩,4,2)))
SS1 = INT(VAL(SUBSTR(c当前成绩,7,2)))
SSS1 = INT(VAL(SUBSTR(c当前成绩,10,3)))
HH2 = INT(VAL(SUBSTR(c变动成绩,1,2)))
MM2 = INT(VAL(SUBSTR(c变动成绩,4,2)))
SS2 = INT(VAL(SUBSTR(c变动成绩,7,2)))
SSS2 = INT(VAL(SUBSTR(c变动成绩,10,3)))
SSS = SSS1 + SSS2
IF SSS >= 1000
SSS = SSS - 1000
SS1 = SS1 + 1
ENDIF
SS = SS1 + SS2
IF SS>=60
SS = SS - 60
MM1 = MM1 + 1
ENDIF
MM = MM1 + MM2
IF MM>=60
MM = MM - 60
HH1 = HH1 + 1
ENDIF
HH = HH1 + HH2
RETURN PADL(HH,2,"0") + ":" + PADL(MM,2,"0") + ":" + PADL(SS,2,"0") + "." + PADL(SSS,3,"0")
ENDFUNC
FUNCTION 减少加时间(c当前成绩,c变动成绩)
LOCAL HH,HH1,HH2,MM,MM1,MM2,SS,SS1,SS2,SSS,SSS1,SS2
HH1 = INT(VAL(SUBSTR(c当前成绩,1,2)))
MM1 = INT(VAL(SUBSTR(c当前成绩,4,2)))
SS1 = INT(VAL(SUBSTR(c当前成绩,7,2)))
SSS1 = INT(VAL(SUBSTR(c当前成绩,10,3)))
HH2 = INT(VAL(SUBSTR(c变动成绩,1,2)))
MM2 = INT(VAL(SUBSTR(c变动成绩,4,2)))
SS2 = INT(VAL(SUBSTR(c变动成绩,7,2)))
SSS2 = INT(VAL(SUBSTR(c变动成绩,10,3)))
IF SSS1 >= SSS2
SSS = SSS1 - SSS2
ELSE
SSS = SSS1 - SSS2 + 1000
SS1 = SS1 - 1
ENDIF
IF SS1 >= SS2
SS = SS1 - SS2
ELSE
SS = SS1 - SS2 + 60
MM1 = MM1 - 1
ENDIF
IF MM1 >= MM2
MM = MM1 - MM2
ELSE
MM = MM1 - MM2 + 60
HH1 = HH1 - 1
ENDIF
HH = HH1 - HH2
IF HH < 0
MESSAGEBOX("减少变动成绩大于当前成绩,成绩不变!",48,"提示")
RETURN c当前成绩
ELSE
RETURN PADL(HH,2,"0") + ":" + PADL(MM,2,"0") + ":" + PADL(SS,2,"0") + "." + PADL(SSS,3,"0")
ENDIF
ENDFUNC
|