{ Следующий код вставляет значение даты/времени в memo-поле. }
Var
s : string
begin
s := DateToStr( Date ) + ' ' + TimeToStr( Time ) + ' :';
Memo1.Lines.Insert(0, s);
Memo1.SetFocus;
Memo1.SelStart := Length(s);
Memo1.SelLength := 0;
Вычисление даты Пасхи II
Delphi 1
function
{----------------------------------------------------------------}
{ Вычисляет и возвращает день Пасхи определенного года. }
{ Идея принадлежит Mark Lussier, AppVision
{ Скорректировано для предотвращения переполнения целых, если по }
{ ошибке передан год с числом 6554 или более. }
{----------------------------------------------------------------}
var
nMonth, nDay, nMoon, nEpact, nSunday,
nGold, nCent, nCorx, nCorz: Integer;
begin
{ Номер Золотого Года в 19-летнем Metonic-цикле: }
nGold := (Year mod
{ Вычисляем столетие: }
nCent := (Year div
{ Количество лет, в течение которых отслеживаются високосные года… }
{ для синхронизации с движением солнца: }
nCorx := (3 * nCent) div
{ Специальная коррекция для синхронизации Пасхи с орбитой луны: }
nCorz := (8 * nCent + 5) div
{ Находим воскресенье: }
nSunday := (Longint(5) * Year) div
{ ^ Предохраняем переполнение года за отметку 6554}
{ Устанавливаем Epact – определяем момент полной луны: }
nEpact := (11 * nGold + 20 + nCorz – nCorx) mod
if
if
{ Ищем полную луну: }
nMoon := 44 – nEpact;
if
{ Позиционируем на воскресенье: }
nMoon := nMoon + 7 – ((nSunday + nMoon) mod
if
begin
nMonth := 4;
nDay := nMoon – 31;
end
else
begin
nMonth := 3;
nDay := nMoon;
end
Easter := EncodeDate(Year, nMonth, nDay);
end
Преобразование даты в количество секунд
Delphi 1
EncodeDate возвращает объект TDateTime, который просто является double-числом. Для получения количества миллисекунд с даты 1/1/0001, умножьте результат на 86400000.0 Но чтобы избежать переполнения, лучше пользоваться более поздней датой.
Преобразование даты в неделю
Delphi 1
procedure
var
begin
frstDay := StrToDate('1/1/96');
toDay := StrToDate(Edit1.Text);
week := Trunc((toDay - frstDay) / 7) + 1;
Label1.Caption := IntToStr(week);
end
Преобразование даты
Delphi 1
procedure
var
st,formatsave : string
DT : TDateTime;
begin
st := Edit1.text; // '1996-06-03 00.00.00'
formatsave := ShortDateFormat;
ShortDateFormat := 'yyyy.mm.dd hh.mm.ss';
while