Советы по Delphi. Версия 1.4.3 от 1.1.2001
Шрифт:
Memo1.Lines.Insert(0, s);
Memo1.SetFocus;
Memo1.SelStart := Length(s);
Memo1.SelLength := 0;
Вычисление даты Пасхи II
Delphi 1
function easter (year: integer): tdatetime;
{----------------------------------------------------------------}
{
Вычисляет и возвращает день Пасхи определенного года. }
{ Идея принадлежит Mark Lussier, AppVision <[email protected]>. }
{ Скорректировано для предотвращения переполнения целых, если по }
{ ошибке передан год с числом 6554 или более. }
{----------------------------------------------------------------}
var
nMonth, nDay, nMoon, nEpact, nSunday,
nGold, nCent, nCorx, nCorz: Integer;
begin
{ Номер Золотого Года в 19-летнем Metonic-цикле: }
nGold := (Year mod 19) + 1;
{ Вычисляем столетие: }
nCent := (Year div 100) + 1;
{ Количество лет, в течение которых отслеживаются високосные года… }
{ для синхронизации с движением солнца: }
nCorx := (3 * nCent) div 4 – 12;
{ Специальная коррекция для синхронизации Пасхи с орбитой луны: }
nCorz := (8 * nCent + 5) div 25 – 5;
{ Находим воскресенье: }
nSunday := (Longint(5) * Year) div 4 – ncorx – 10;
{ ^ Предохраняем переполнение года за отметку 6554}
{ Устанавливаем Epact – определяем момент полной луны: }
nEpact := (11 * nGold + 20 + nCorz – nCorx) mod 30;
if nepact < 0 then nEpact := nEpact + 30;
if ((nepact = 25) and (ngold > 11)) or (nepact = 24) then nEpact := nEpact + 1;
{ Ищем полную луну: }
nMoon := 44 – nEpact;
if nmoon < 21 then nMoon := nMoon + 30;
{ Позиционируем на воскресенье: }
nMoon := nMoon + 7 – ((nSunday + nMoon) mod 7);
if nmoon >l 31 then
begin
nMonth := 4;
nDay := nMoon – 31;
end
else
begin
nMonth := 3;
nDay := nMoon;
end;
Easter := EncodeDate(Year, nMonth, nDay);
end; {easter}
Преобразование
Delphi 1
EncodeDate возвращает объект TDateTime, который просто является double-числом. Для получения количества миллисекунд с даты 1/1/0001, умножьте результат на 86400000.0 Но чтобы избежать переполнения, лучше пользоваться более поздней датой.
Преобразование даты в неделю
Delphi 1
procedure TForm1.Button1Click(Sender: TObject);
var frstDay,toDay : TDateTime; week : Integer;
begin
frstDay := StrToDate('1/1/96');
toDay := StrToDate(Edit1.Text);
week := Trunc((toDay - frstDay) / 7) + 1;
Label1.Caption := IntToStr(week);
end;
Преобразование даты
Delphi 1
procedure TForm1.Button1Click(Sender: TObject);
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 pos ('-', st) > 0 do st [pos ('-', st)] := '.';
DT := StrToDateTime(st);
ShortDateFormat := formatsave;
Label1.Caption := DateTimeToStr(DT);
end;
Преобразование даты — добавление столетия
Delphi 1
LongDate := FormatDateTime('ddmmyyyy', StrToDate(ShortDate));
Поделиться:
Популярные книги
Измена. Жизнь заново
1. Измены
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Его огонь горит для меня. Том 2
2. Мир Карастели
Фантастика:
юмористическая фантастика
5.40
рейтинг книги
Командир Красной Армии
1. Командир Красной Армии
Фантастика:
попаданцы
8.72
рейтинг книги
Брачный сезон. Сирота
Любовные романы:
любовно-фантастические романы
7.89
рейтинг книги
Сама себе хозяйка
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Барону наплевать на правила
7. Закон сильного
Фантастика:
боевая фантастика
попаданцы
аниме
5.00
рейтинг книги
Единственная для невольника
Любовные романы:
любовно-фантастические романы
5.67
рейтинг книги
Вторая невеста Драконьего Лорда. Дилогия
Вторая невеста Драконьего Лорда
Любовные романы:
любовно-фантастические романы
5.60
рейтинг книги
Любовь по инструкции
Любовные романы:
любовно-фантастические романы
5.85
рейтинг книги
Город Богов
1. Профсоюз водителей грузовых драконов
Фантастика:
юмористическая фантастика
детективная фантастика
попаданцы
5.00
рейтинг книги
Эволюционер из трущоб. Том 5
5. Эволюционер из трущоб
Фантастика:
попаданцы
аниме
фэнтези
фантастика: прочее
5.00
рейтинг книги
Мастер Разума II
2. Мастер Разума
Фантастика:
героическая фантастика
попаданцы
аниме
5.75
рейтинг книги
Сердце Дракона. Том 9
9. Сердце дракона
Фантастика:
фэнтези
героическая фантастика
боевая фантастика
7.69
рейтинг книги
Нечто чудесное
2. Романтическая серия
Любовные романы:
исторические любовные романы
9.43