Преобразование Микросекунд в значение TDateTime

Тема в разделе "Delphi", создана пользователем WinHack, 24 ноя 2016.

  1. WinHack
    Функция FormatDateTime преобразовывает значение TDateTime в строковое значение. При использовании параметров форматирования можно задать способ отображения времени с точностью до миллисекунд.

    При тестировании скорости выполнения кода или когда у Вас есть долго выполняющиеся функции, Вам нужно отобразить длительность выполнения процесса вплоть до микросекунд.

    Пользовательский класс TStopWatch может быть использован для измерения скорости выполнения, где необходима точность в микросекундах, или даже в наносекундах.

    Примечание: Здесь 1000 микросекунд в одной миллисекунде и 1000 наносекунд в одну микросекунду.


    Микросекунды в FormatDateTime


    Вот пользовательская функция 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;
    Примечание: Если у Вас имеются миллисекунды, а Вам нужно значение TDateTime - преобразуйте миллисекунды в Days и Time.