Zaobserwowałem jakieś dziwne zachowanie dotyczące metod EncodeDateTime
i EncodeTime
i szukam wyjaśnienia.Dlaczego porównania TTime dają nieoczekiwane wyniki?
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;
Co znalazłem to, że godzina część date
„s ma wartość 7:59:59
zamiast 8:00:00
. Ale jeśli ustawię część godzinową na time
i date
na 9, assert przejdzie i date
oszacuje oczekiwaną wartość. Kilka godzin działa, a inne nie. Czy ktoś może mi wyjaśnić, co się dzieje?