![]() |
|
#1
|
|||
|
|||
![]() Нужно сделать программу, которая определит разницу между двумя датами, введенными в два однострочных редактора, в формате дд.мм.гггг. Как такое сделать, ума не приложу. Прошу помочь.
|
#2
|
||||
|
||||
![]() Поднималась тут такая тема. Ищи.
— Как тебя понимать? — Понимать меня не обязательно. Обязательно меня любить и кормить вовремя. На Delphi, увы, больше не программирую. Рекомендуемая литература по программированию |
#3
|
|||
|
|||
![]() Это?
Сделал все как тут, не работает. Он пишет, сколько дней, сколько месяцев, и сколько лет между этими датами. Мне же нужен ответ в формате дд.мм.гг. И еще, почему не работает такой вариант: Код:
procedure TForm1.Button1Click(Sender: TObject); var p,v,rez:TDate; begin p:=strtodate(Edit1.Text); v:=strtodate(Edit2.Text); rez:=p-v; Label1.Caption:=datetostr(rez); end; Последний раз редактировалось Diplomate, 10.12.2012 в 22:07. |
#4
|
||||
|
||||
![]() Как именно он не работает? ошибка при компиляции, во время работы? Неправильный результат?
И вообще, TDatePicker (или TMaskEdit) использовать не удобнее? Оставайтесь хорошими людьми... VK id2634397, ds [at] phoenix [dot] dj |
#5
|
|||
|
|||
![]() Цитата:
Выдает неправильный результат. Между 2012 и, скажем, 2010 годом пишет разницу 1912 лет. |
#6
|
|||
|
|||
![]() Правильно пишет. Тут есть особенность, что у типа TDateTime значение 0 соответсвует 1 января 1900 года (если не ошибаюсь). В принципе, можно либо посчитать грубо (в году 365 дней, в месяце 30 деней), либо извращаиться с DaysBetween, MonthsBetween (года - по последней).
Первый вариант выглядит так: Код:
procedure TForm1.Button1Click(Sender: TObject); var p,v,rez:TDate; ds : integer; y, m, d : integer; begin p:=strtodate(Edit1.Text); v:=strtodate(Edit2.Text); rez:=p-v; ds := trunc(rez); y := ds div 365; m := (ds mod 365) div 30; d := (ds mod 365) mod 30; Label1.Caption:=format('%d.%d.%d',[d,m,y]); end; |