我观察到一些关于EncodeDateTime
和EncodeTime
方法的奇怪行为,我正在寻求一些解释。
procedure SomeTestCase;
var
time: TTime;
dateTime: TDateTime;
begin
time := EncodeTime(8, 0, 0, 0);
date := EncodeDateTime(2012, 11, 2, 8, 0, 0, 0);
Assert(time = TimeOf(date)); //Fails
end;
我发现的是,date
小时部分的计算结果是7:59:59
而不是8:00:00
。time
但是,如果我将和的小时部分设置date
为 9,则断言通过并date
计算为预期值。有些时间工作,而另一些时间则不工作。有人可以解释一下发生了什么吗?