Tôi đã quan sát thấy một số loại hành vi kỳ lạ liên quan đến các phương pháp EncodeDateTime
và EncodeTime
và tôi đang tìm kiếm một số giải thích.Tại sao so sánh TTime lại cho kết quả không mong muốn?
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;
Những gì tôi đã tìm thấy là phần giờ date
's đánh giá để 7:59:59
thay vì 8:00:00
. Nhưng nếu tôi đặt phần giờ của time
và date
thành 9, xác nhận vượt qua và date
đánh giá giá trị mong đợi. Một số giờ làm việc trong khi một số người khác thì không. Ai đó có thể giải thích cho tôi chuyện gì đang xảy ra?