I have found a similar question [here](https://stackoverflow.com/questions/21550579/is-datetimetostring-in-delphi-xe5-doesnt-work), but it is unrelated to what I am trying to do. I have done a lot of research on the Internet and I have determined that Delphi is working as designed or intended, where it omits the time if the time is zero. I have an application which displays the date & time in a listview, and when the time is midnight, it doesn't show 00:00:00, and therefore making the results look uneven and out of place.

The way I've gotten around this which is still locale independant is to add a microsecond to the time, see sample code:

```
program Test11;

{$APPTYPE CONSOLE}
{$R *.res}

uses
  System.SysUtils, Winapi.Windows;

begin
  try
    Writeln(DateTimeToStr(44167, TFormatSettings.Create(GetThreadLocale)));
    Writeln(DateTimeToStr(44167.00000001, TFormatSettings.Create(GetThreadLocale)));
    Readln;
  except
    on E: Exception do
      Writeln(E.ClassName, ': ', E.Message);
  end;

end.

```

And subsequent output:

```
02/12/2020
02/12/2020 00:00:00

```

The question is - is there a better, more programatically correct way to do achieve this?

Running Delphi XE6