Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Как посчитать возраст человека (2) ?

Delphi , Синтаксис , Дата и Время

Code:
{ BrthDate:  Date of birth }
 
function TFFuncs.CalcAge(brthdate: TDateTime): Integer;
var
month, day, year, bmonth, bday, byear: word;
begin
DecodeDate(BrthDate, byear, bmonth, bday);
if bmonth = 0 then
   result := 0
else
begin
   DecodeDate(Date, year, month, day);
   result := year - byear;
   if (100 * month + day) < (100 * bmonth + bday) then
     result := result - 1;
end;
end;
 

 
Code:
procedure TForm1.Button1Click(Sender: TObject);
var
Month, Day, Year, CurrentMonth, CurrentDay, CurrentYear: word;
Age: integer;
begin
DecodeDate(DateTimePicker1.Date, Year, Month, Day);
DecodeDate(Date, CurrentYear, CurrentMonth, CurrentDay);
if (Year = CurrentYear) and (Month = CurrentMonth) and (Day = CurrentDay) then
   Age := 0
else
begin
   Age := CurrentYear - Year;
   if (Month > CurrentMonth) then
     dec(Age)
   else if Month = CurrentMonth then
     if (Day > CurrentDay) then
       dec(Age);
end;
Label1.Caption := IntToStr(Age);
end;
Взято с Delphi Knowledge Base: http://www.baltsoft.com/

Код, который вы предоставили, это программный код на языке Delphi, который рассчитывает возраст человека на основе его даты рождения и текущей даты.

Вот шаг за шагом, как работает код:

  1. Единица TFFuncs определяет функцию CalcAge, которая принимает параметр TDateTime, представляющий дату рождения.
  2. Внутри функции CalcAge используется функция DecodeDate, чтобы извлечь год, месяц и день из даты рождения.
  3. Код затем проверяет, если месяц и день текущей даты меньше месяца и дня даты рождения. Если это так, он вычитывает 1 из рассчитанного возраста.
  4. В обработчике события Button1Click программа получает текущую дату с помощью свойства DateTimePicker1.Date.
  5. Затем она извлекает год, месяц и день из текущей даты с помощью функции DecodeDate.
  6. Если год, месяц и день текущей даты совпадают с датой рождения, она устанавливает возраст в 0.
  7. В противном случае она рассчитывает возраст, вычитая год рождения из текущего года, а затем проверяет, если месяц и день текущей даты больше или равны месяцу и дню даты рождения. Если они не являются, она вычитывает 1 из рассчитанного возраста.
  8. Наконец, она отображает рассчитанный возраст в контроле Label.

Код является quite эффективным и точным, но я бы предложил несколько улучшений:

  • Вместо использования функции DecodeDate для извлечения года, месяца и дня, вы можете использовать свойства Year, Month и DayOfMonth типа TDateTime.
  • Вы также можете упростить расчет возраста, вычитая год рождения из текущего года и затем проверяя, если месяц и день текущей даты больше или равны месяцу и дню даты рождения. Если они не являются, вы можете просто вычесть 1 из рассчитанного возраста.
  • Вы также можете рассмотреть более надежный метод расчета возраста, учитывая високосные годы и не високосные годы.

Вот обновленный код, который включает в себя эти предложения:

function CalcAge(brthdate: TDateTime): Integer;
var
  year, month, day, byear, bmonth, bday: word;
begin
  DecodeDate(brthdate, byear, bmonth, bday);
  year := YearOf(TDateTime(Now));
  month := MonthOf(TDateTime(Now));
  day := DayOf(TDateTime(Now));

  if (byear = year) and (bmonth = month) and (bday = day) then
    result := 0
  else
  begin
    result := year - byear;
    if (100 * month + day) < (100 * bmonth + bday) then
      dec(result);
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  Age: integer;
begin
  Label1.Caption := IntToStr(CalcAge(DateTimePicker1.Date));
end;

Обновленный код использует функции YearOf, MonthOf и DayOf для извлечения года, месяца и дня из текущей даты. Он также упрощает расчет возраста, вычитая год рождения из текущего года и затем проверяя, если месяц и день текущей даты больше или равны месяцу и дню даты рождения. Если они не являются, он просто вычитывает 1 из рассчитанного возраста.

Определение возраста человека в программе на языке Pascal, включая функцию расчета возраста и пример использования в интерфейсе приложения.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Дата и Время ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-05-01 14:57:02/0.0051338672637939/1