Попробуйте использовать функцию EncodeDateTime , объявленную в модуле DateUtils.
function EncodeDateTime(const AYear: Word;
const AMonth: Word;
const ADay: Word;
const AHour: Word;
const AMinute: Word;
const ASecond: Word;
const AMilliSecond: Word): TDateTime;
См. Этот пример
uses
DateUtils;
var
myDateTime : TDateTime;
begin
//Your Code
myDateTime := EncodeDateTime(2009, 11, 28, 14, 23, 12, 000);
//Your Code
End;
Другой вариант
uses
SysUtils;
var
myDateTime : TDateTime;
begin
//Your Code
myDateTime:= EncodeDate(2009,11,28)+EncodeTime(14,23,12,000);
//Your Code
end;
Второй вариант работает, потому что TDatetime Он хранится как двойной (TDateTime = type Double;
), с датой как неотъемлемой частью (функция EncodeDate возвращает интеграл), и время как дробная часть.
Часть даты TDateTime представляет количество дней, прошедших с 30.12.1899. TDateTime может быть любой датой до 31 декабря 9999 года (десятичное значение 2 958 465), значения TDateTime также могут быть отрицательными. Десятичное значение -693593 соответствует 1 января 0001 года.
см. Примеры работ
var
myDateTime : TDateTime;
Begin
myDateTime :=0; //represents 12/30/1899
myDateTime :=1; //represents 12/31/1899
myDateTime :=-1; //represents 12/29/1899
myDateTime :=-693593; //represents 01/01/0001
myDateTime := Now(); //assign the current date and time to myDateTime
myDateTime:=Trunc(Now()); //Extract only the date part.
myDateTime:=Frac(Now()); //Extract only the time part.
myDateTime :=Now() + 1;// Add a day to the current datetime
End;
Важное примечание с сайта embarcadero:
Чтобы найти дробное число дней
между двумя датами, просто вычтите
два значения, если одно из
Значения System.TDateTime отрицательны.
Точно так же, чтобы увеличить дату и
значение времени на определенный дробный
количество дней, добавить дробное
число к значению даты и времени, если
значение System.TDateTime
положительны.
при работе с негативом
Значения System.TDateTime, вычисления
должен обрабатывать часть времени отдельно .
Дробная часть отражает
доля 24-часового дня без
что касается знака
Значение System.TDateTime. Например,
6:00 утра 29.12.1999 - –1,25, а не –1
+ 0,25, что будет –0,75. Между значениями System.TDateTime нет
–1 и 0.
для дополнительной информации вы можете увидеть эту ссылку