Skip to content

Instantly share code, notes, and snippets.

@CarlTBarnes
Created July 4, 2020 21:20
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save CarlTBarnes/95ce2526c6ad74511cb475cd469ca0fd to your computer and use it in GitHub Desktop.
Save CarlTBarnes/95ce2526c6ad74511cb475cd469ca0fd to your computer and use it in GitHub Desktop.
TimeHMSh (Hour,Min,Sec) like DATE(). Also TimeSplit() Faster than using Hoiur() Minute() Second()
TimeSplit PROCEDURE(LONG Time2Split, *? OutHour, *? OutMinute, <*? OutSecond>, <*? OutHundred>)
TimeHMS PROCEDURE(SHORT Hours, SHORT Mins, SHORT Secs=0, SHORT Hundredths=0),LONG !Time Join H:M:S.D
TimeHMS2 PROCEDURE(BYTE Hours, BYTE Mins, BYTE Secs=0, BYTE Hundredths=0),LONG !Must have valid H,M,S
DateSplit PROCEDURE(LONG Date2Split, *? OutMonth, *? OutDay, *? OutYear)
!==========================================================================================================
TimeHMS PROCEDURE(SHORT H, SHORT M, SHORT S=0, SHORT Hundredths=0)!,LONG
!This allows out of range HMS values, e.g. you can pass 90 minutes
CODE
RETURN (H * 60*60*100) + |
(M * 60*100) + |
(S * 100) + |
Hundredths + 1
!--------------------------------------------------------------------
TimeHMS2 PROCEDURE(BYTE H, BYTE M, BYTE S=0, BYTE Hundredths=0)!,LONG
!This requires that all parts (H,M,S) all be in a valid range
T1 TIME
TG GROUP, OVER(T1)
F BYTE
S BYTE
M BYTE
H BYTE
END
CODE
TG.H=H ; TG.M=M ; TG.S=S ; TG.F=Hundredths
RETURN T1
!--------------------------------------------------------------------
TimeSplit PROCEDURE(LONG T, *? OutHour, *? OutMin, <*? OutSec>, <*? OutHund>)
!This is faster than using HOUR() MINUTE() SECOND()
T1 TIME
TG GROUP, OVER(T1)
F BYTE
S BYTE
M BYTE
H BYTE
END
CODE
T1=T
OutHour=TG.H
OutMin =TG.M
IF ~OMITTED(OutSec) THEN OutSec =TG.S.
IF ~OMITTED(OutHund) THEN OutHund=TG.F.
RETURN
!--------------------------------------------------------------------
DateSplit PROCEDURE(LONG D, *? OutMonth, *? OutDay, *? OutYear)
!This is much faster than calling MONTH() DAY() YEAR()
D1 DATE
DG GROUP, OVER(D1)
D BYTE
M BYTE
Y USHORT
END
CODE
D1=D
OutMonth=DG.M
OutDay=DG.D
OutYear=DG.Y
RETURN
!--------------------------------------------------------------------
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment