Created
July 4, 2020 21:20
-
-
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()
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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