Как закодировать дату и время в Дельфи

Можно легко выполнить очень хороший различный луг с помощью Eclipse. См. http://triviaatwork.blogspot.com/2008/09/comparing-two-folders-on.html

5
задан Snackmoore 19 November 2009 в 04:45
поделиться

1 ответ

Попробуйте использовать функцию 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 Он хранится как Double ( 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.1899 составляет –1,25, а не –1 + 0,25, что составит –0,75. Нет значений System.TDateTime между –1 и 0.

для дополнительной информации вы можете увидеть эту ссылку

31
ответ дан 18 December 2019 в 05:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: