Автор: Николай Камынин
Учитывая, указанные ранее ограничения, рассмотрим примеры функций из библиотеки автора:
БИБЛИОТЕКА ФУНКЦИЙ NK
Функции преобразования даты и времени:
FUNC DateTimeSesLoc() ‘определение даты сессии локального времени и текущей даты
MAP=GET_TRADE_DATE () ‘дата торговой сессии
Y_M_D1() ‘распаковка даты торговой сессии
DateTrade=DATE(YEAR,MONTH,DAY) ‘дата торговой сессии в формате YYYYMMDD
MAP=GET_DATETIME () ‘текущая дата и время
Y_M_D() ‘распаковка текущей даты
DateLast=DATE(YEAR,MONTH,DAY) ‘дата в формате YYYYMMDD
H_M_S() ‘распаковка текущего времени
T=0+TIME(HOUR,MIN,SEC) ‘текущее время в формате hhmmss
LOCALTIME=GET_INFO_PARAM(«LOCALTIME«) ‘локальное время компьютера hh:mm:ss
Time_ID=0+HMS(LOCALTIME) ‘время hh:mm:ss в hhmmss будем использовать как код транзакции
‘—————
END FUNC
‘——————————
FUNC Y_M_D1() ‘распаковка даты
YEAR=GET_VALUE(MAP, «YEAR»)
MONTH=GET_VALUE(MAP, «MONTH»)
DAY=GET_VALUE(MAP, «DAY»)
DW=GET_VALUE(MAP, «DAYOFWEEK»)
END FUNC
‘——————————
FUNC Y_M_D() ‘распаковка текущей даты
Y_M_D1() ‘распаковка даты
DW=GET_VALUE(MAP, «DAYOFWEEK«)
DD_MM_YYYY=GET_VALUE(MAP, «DATETIME»)
DateLastString=SUBSTR (DD_MM_YYYY, 6,4) & SUBSTR (DD_MM_YYYY, 3,2) & SUBSTR (DD_MM_YYYY,0,2)
END FUNC
‘——————-
FUNC H_M_S() ‘распаковка текущего времени
HOUR=GET_VALUE(MAP, «HOUR»)
MIN=GET_VALUE(MAP, «MIN»)
SEC=GET_VALUE(MAP, «SEC»)
‘MLS=GET_VALUE(MAP, «MILLISEC»)
END FUNC
‘——————-
FUNC HMS(LTime) ‘распаковка времени из формата hh:mm:ss в формат hhmmss
result=SUBSTR (LTime,0,2) & SUBSTR (LTime, 3,2) & SUBSTR (LTime, 6,2)
END FUNC
‘——————-
FUNC Y_M_D_H_M(LDat) ‘распаковка текущего времени
Y_M_D(LDat) ‘распаковка текущей даты
H_M_S(LDat) ‘распаковка текущего времени
END FUNC
‘——————-
FUNC DATE(YEAR,MONTH,DAY ) ‘дата в формате YYYYMMDD
result=(YEAR*100+MONTH)*100+DAY
END FUNC
‘——————-
FUNC TIME(HOUR,MIN,SEC ) ‘время в формате hhmmss
result=(HOUR*100+MIN)*100+SEC
END FUNC
‘——————-
FUNC DecrTIME(HHMMSS,STEP ) ‘перевод назад на STEP минут, вывод hhmmss
HM1=FLOOR (HHMMSS/100)
H1=FLOOR (HM1/100)
M1=HM1-H1*100
S1=HHMMSS-100*(H1*100+M1)
S1=H1*3600+M1*60+S1- STEP*60
IF S1>0
result=SEC_TO_HHMMSS(S1)
ELSE
result=0
END IF
END FUNC
‘——————-
FUNC IncTIME(HHMMSS,STEP ) ‘перевод вперед на STEP минут, вывод hhmmss
HM1=FLOOR (HHMMSS/100)
H1=FLOOR (HM1/100)
M1=HM1-H1*100
S1=HHMMSS-100*(H1*100+M1)
S1=H1*3600+M1*60+S1+STEP*60
result=SEC_TO_HHMMSS(S1)
END FUNC
‘——————
FUNC SEC_TO_HHMMSS(TimeToSec) ‘перевод из секунд в формат HHMMSS
TEMP=TimeToSec
H2=FLOOR (TEMP/3600)
MS2=TEMP-H2*3600
M2=FLOOR (MS2/60)
S2=MS2-60*M2
result=(H2*100+M2)*100+S2
END FUNC
‘————
FUNC HHMMSS_TO_MIN(HHMMSS) ‘перевод времени из HMMSS в минуты
H2=FLOOR (HHMMSS/3600)
MS2=HHMMSS-H2*3600
M2=FLOOR (MS2/60)
result=H2*60+M2
END FUNC