Функция FormatDateTime преобразовывает значение TDateTime в строковое значение. При использовании параметров форматирования можно задать способ отображения времени с точностью до миллисекунд.
При тестировании скорости выполнения кода или когда у Вас есть долго выполняющиеся функции, Вам нужно отобразить длительность выполнения процесса вплоть до микросекунд.
Пользовательский класс TStopWatch может быть использован для измерения скорости выполнения, где необходима точность в микросекундах, или даже в наносекундах.
Примечание: Здесь 1000 микросекунд в одной миллисекунде и 1000 наносекунд в одну микросекунду.
Микросекунды в FormatDateTime
[hr][/hr]
Вот пользовательская функция MicrosecondsToTime, которую Вы можете использовать для преобразования микросекунд в значение TDateTime, а затем для преобразования в более удобное для пользователей представление с помощью функции FormatDateTime:
Примечание: Если у Вас имеются миллисекунды, а Вам нужно значение TDateTime - преобразуйте миллисекунды в Days и Time.
При тестировании скорости выполнения кода или когда у Вас есть долго выполняющиеся функции, Вам нужно отобразить длительность выполнения процесса вплоть до микросекунд.
Пользовательский класс TStopWatch может быть использован для измерения скорости выполнения, где необходима точность в микросекундах, или даже в наносекундах.
Примечание: Здесь 1000 микросекунд в одной миллисекунде и 1000 наносекунд в одну микросекунду.
Микросекунды в FormatDateTime
[hr][/hr]
Вот пользовательская функция MicrosecondsToTime, которую Вы можете использовать для преобразования микросекунд в значение TDateTime, а затем для преобразования в более удобное для пользователей представление с помощью функции FormatDateTime:
Код:
uses DateUtils;
function MicrosecondsToTime(
const microSeconds : TLargeInteger) : string;
const
MicroPerMilli = 1000;
var
dt : TDateTime;
microSec : TLargeInteger;
begin
dt := microSeconds / MicroPerMilli / MSecsPerSec / SecsPerDay;
microSec := microseconds - MicroPerMilli * MilliSecondOf(dt) ;
if microsec < 0 then
begin
dt := IncMilliSecond(dt,-1) ;
microsec := MicroPerMilli + microsec;
end;
result := Format('%d days, %s %d', FormatDateTime[(
'hh:nn:ss.z', Frac(dt)), microSec]) ;
end;