Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Делфи _ Посчитать возраст

Автор: Крастb 16.12.2009 9:55

Здраствуйте. Мне необходимо посчитать разницу между двумя датами. Разница должна быть в полных годах.
Например 05.05.1991 и 05.12.1992. Полных лет - 1.

Делаю так

Код
day1 := DateTimePicker2.Date;
day2 := DateTimePicker1.Date;
diff := day2 - day1;
ShowMessage('day2 - day1 = '+FloatToStr(diff)+' days');


Но не нравится так. Хотелось бы получать ответ в точном возрасте. (Возраст = 14 лет)
И как "запретить" ввод даты например 1900?

Автор: andriano 16.12.2009 13:00

Цитата(Крастb @ 16.12.2009 5:55) *
Хотелось бы получать ответ в точном возрасте. (Возраст = 14 лет)
То есть возраст, выраженный в годах, точнее возраста, выраженного в днях?
Цитата
И как "запретить" ввод даты например 1900?
Ну, например, провести в Государственной Думе закон о запрещении 1900 года. Или что значит "запретить"?

Автор: volvo 16.12.2009 19:07

Цитата
Но не нравится так. Хотелось бы получать ответ в точном возрасте.
Вообще-то функции от SecondsBetween до YearsBetween не просто так сделаны:
  ShowMessage(
Format('%s - %s -> %d years',
[DateToStr(day1), DateToStr(day2),
Abs(YearsBetween(day1, day2))]
)
);
Не забудь подключить DateUtils...

Цитата
И как "запретить" ввод даты например 1900?
Для этого у DateTimePicker-а есть свойства MinDate/MaxDate.

Автор: Крастb 17.12.2009 7:08

Цитата(volvo @ 16.12.2009 15:07) *

Вообще-то функции от SecondsBetween до YearsBetween не просто так сделаны:
  ShowMessage(
Format('%s - %s -> %d years',
[DateToStr(day1), DateToStr(day2),
Abs(YearsBetween(day1, day2))]
)
);
Не забудь подключить DateUtils...

Для этого у DateTimePicker-а есть свойства MinDate/MaxDate.

спасибо

Автор: Крастb 19.12.2009 8:13

DateUtils не могу подключить почему то
ошибка: Identifier redeclared: 'DateUtils'

Автор: Ozzя 19.12.2009 13:59

Что значит "не могу..."?

uses DateUtils;
...
{твоя программа}
...

Автор: volvo 19.12.2009 16:15

Цитата
ошибка: Identifier redeclared: 'DateUtils'
, похоже ты дважды его подключаешь, или описываешь как-то неправильно, но идентификатор DateUtils у тебя в программе встречается больше одного раза...