Функции преобразования даты и времени
Дата и время в QPILE имеют внутренний числовой фомат. Для времени это число формата HHMMSS, то есть 11 часов 43 минуты 5 секунд будут числом 114305. Для даты это YYYYMMDD. с одной стороны такое представление удобно для быстрого перевода в него строкого впредставления и назад, с другой представляет серьёзную проблему, когда требуется производить операции суммирования-вычитания с такими представлениями. В этой статье приведу 4 функции, которые переводят внутреннее представление в строковое и обратно.
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' Пребразует время из внутреннего int ЧЧММСС в текстовый HH:MM:SS
FUNC TimeIntToStr(return)
result = add_zero(Floor(return/10000)) & ":" & add_zero(Mod(Floor(return/100),100)) & ":" & add_zero(Mod(return,100))
END FUNC
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' Преобразует дату из внутреннего int YYYYMMDD в строку ДД.ММ.ГГГГ
FUNC DateIntToStr(iDate)
result = add_zero(Mod(iDate,100)) & "." & add_zero(Mod(Floor(iDate/100),100)) & "." & Floor(iDate/10000)
END FUNC
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' Преобразует время из строкового формата HH:MM:SS в во внутренний int HHMMSS.
' Разделители несущественны, пробелы/табуляции слева и лишние символы справа игнорируются
' Возможны укороченные форматы HH:MM или HH
FUNC TimeStrToInt(result)
result = trim(result)
result = 10000 * substr(result,0,2) + 100 * substr(result,3,2) + substr(result,6,2)
END FUNC
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' Преобразует дату из строкового формата ДД.ММ.ГГГГ во внутренний int YYYYMMDD.
' Разделители несущественны, пробелы/табуляции слева и лишние символы справа игнорируются
FUNC DateStrToInt(result)
result = trim(result)
result = 0 + (substr(result,6,4) & substr(result,3,2) & substr(result,0,2))
END FUNC
и одна служебная функция
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' Добавляет 0 в начале строки, если требуется
FUNC Add_Zero(result)
if 1 == Len(result)
result = "0" & result
else
result = "" & result
end if
END FUNC
