Es ist ja auch etwas verwirrend wenn DateTimeToStr für das Datum das ShortDateFormat aber für die Zeit das LongTimeFormat nimmt.
Ja und nicht nur das. Sondern auch die Ungewissheit, in wie fern da noch Regional- und Systemeinstellungen mit rein spielen. Das kann man ja auch nur begrenzt testen.
Hast du mal probiert, ob das nicht auch so funktioniert?
Delphi-Quellcode:
var
FS: TFormatSettings;
S: string;
begin
FS := TFormatSettings.Invariant;
FS.DateSeparator := '-';
FS.TimeSeparator := '-';
S := DateTimeToStr(Now, FS);
end;
Im vorgenannten Beispiel könnte das - mit Ausnahme des Bindestriches zwischen Datum und Uhrzeit - funktionieren. Aber ich habe zahlreiche ganz unterschiedliche Formatierungen, die nicht so eng an das englische Format angelehnt sind. Dann ginge das wieder nicht mehr.
Also wenn ich das so rekapituliere scheint es nicht völlig übertrieben zu sein, Shortxxx und Longxxx jeweils gleich zu belegen. Damit einher geht dann für mich die Frage, wie sinnhaltig die threadsichere zweite Implementierung von FormatDateTime ist, die dann ja mit fünf (!!!) evtl. unterschiedlichen Formatstrings hantiert.