我有一小段代码:
DateTimeToString(DiffString, 't.zzz', TDT);
ShowMessage('TDT: ' + DateTimeToStr(TDT));
ShowMessage('DiffString: ' + DiffString);
第一个ShowMessage的结果给出了随机好的DateTime TDT值... 第二个,其中DiffString是00:00.000
有人可以在其他IDE中查看吗?
答案 0 :(得分:5)
事实上DateTimeToString
工作得很好,表现完全符合设计。它正是你所要求的。
以下是您应该提供的SSCCE:
{$APPTYPE CONSOLE}
uses
SysUtils;
var
DiffString: string;
TDT: TDateTime;
begin
TDT := Date;
DateTimeToString(DiffString, 't.zzz', TDT);
Writeln('TDT: ' + DateTimeToStr(TDT));
Writeln('DiffString: ' + DiffString);
end.
<强>输出:强>
TDT: 04/02/2014 DiffString: 00:00.000
原因是,我在这里猜测,您的约会时间来自对Date
的调用。或者您的日期时间可能是未初始化的变量。
无论哪种方式,很明显时间部分为零。进入DiffString
你把时间而不是日期。这就是t.zzz
格式字符串的含义。
再次尝试使用包含非零时间的日期时间:
{$APPTYPE CONSOLE}
uses
SysUtils;
var
DiffString: string;
TDT: TDateTime;
begin
TDT := Now;
DateTimeToString(DiffString, 't.zzz', TDT);
Writeln('TDT: ' + DateTimeToStr(TDT));
Writeln('DiffString: ' + DiffString);
end.
<强>输出强>
TDT: 04/02/2014 11:16:43 DiffString: 11:16.942
当然,t.zzz
是一种糟糕的格式选择。它结合了短时间格式和毫秒。如您所见,在我的机器上,默认的短时间格式省略了秒。所以你得到几小时,几分钟和几毫秒。您需要重新考虑格式字符串。也许'hh:nn:ss.zzz'
就是你所需要的。