我在这里找到了类似的问题,但它与我想要做的事情无关.我已经在互联网上做了很多研究,我已经确定Delphi正在按设计或预期工作,如果时间为零则省略时间.我有一个应用程序在列表视图中显示日期和时间,当时间是午夜时,它不显示00:00:00,因此使结果看起来不均匀且不合适.
我已经解决了这个仍然是locale独立的方式是添加一个微秒的时间,请参阅示例代码:
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.
Run Code Online (Sandbox Code Playgroud)
以后的输出:
02/12/2020
02/12/2020 00:00:00
Run Code Online (Sandbox Code Playgroud)
问题是 - 是否有更好的,更编程的正确方法来实现这一目标?
运行Delphi XE6
您可以使用FormatDateTime函数来更好地控制日期时间格式.
FormatDateTime('ddddd tt', 44167, TFormatSettings.Create);
Run Code Online (Sandbox Code Playgroud)
注意:不需要TFormatSettings.Create(GetThreadLocale)使用locale参数调用,因为普通TFormattSettings.Create调用将GetThreadLocale在Windows平台上内部使用.