Topic: сравнить 2 даты

Есть 2 даты, в двух DatePicker, как их сравнить, что бы понять сколько дней разницы между ними? То есть ответ в итоге должено быть число дней, разницы между ними

Re: сравнить 2 даты

Hello agatlogic101

Can this help you ?

procedure Form1_Button1_OnClick (Sender: TObject; var Cancel: boolean);
var    TD1,TD2:TDateTime;
        M,Y,D:Integer;
        Year, Month, Day, Year2, Month2, Day2: Word;
begin
    TD1:=Trunc(Form1.DateTimePicker1.Date);
    TD2:=Trunc(Form1.DateTimePicker2.Date);
    Decodedate(TD1,Year, Month, Day );
    Decodedate(TD2,Year2, Month2, Day2 );
    Y:=Year2-Year;
    M:=Month2-Month;

    if Month2<Month then
    begin
        dec(Y);
        M:=(Month2+12)-Month
    end else M:=Month2-Month;

    if Day2<Day then begin dec(M);
    D:=(Day2+30)-Day end else D:=Day2-Day;

    ShowMessage( IntToStr(Y)+' ans '+IntToStr(M)+' mois '+ IntToStr(D)+' jours' );
end;

To get only number of days, you will have to adapt the end of this code

JB

Re: сравнить 2 даты

Привет Agatlogic,  (Salut Jean, tu va bien?),
Я думаю, что мы все рассчитываем даты по-разному.
Я всегда стараюсь избегать использования скрипта (не очень часто!), Поэтому вместо этого я использую вычисляемое поле.
С Уважением,
Derek.

Post's attachments

Attachment icon Days between dates.zip 336.99 kb, 263 downloads since 2020-02-17 

4 (edited by agatlogic101 2020-02-17 18:27:29)

Re: сравнить 2 даты

Thanks jean.brezhonek. this is what I need

Re: сравнить 2 даты

wow derek, very simple and interesting

Re: сравнить 2 даты

а как это посчитать не в калькуляторе, а в скрипте?
round(abs(julianday(date1) - round(abs(julianday(date2)))))
Что бы я мог получить переменную с этим значением?
в 1 способе месяц не привязан к количеству дней, что в разные месяцы даёт разное количество дней
во втором, не могу получить переменную количества дней, что бы использовать в скрипте, в момент сохранения

7 (edited by derek 2020-02-18 00:30:15)

Re: сравнить 2 даты

Здравствуй,
Есть разные способы вычислить это, используя скрипт, но я делаю это так.
Derek.

Post's attachments

Attachment icon Days between dates.zip 337.3 kb, 276 downloads since 2020-02-18 

8 (edited by abc52 2020-02-18 06:06:30)

Re: сравнить 2 даты

А если 2 даты  изменяются в  Form1.TableGrid1.Cells [2 , r]  -  Form1.TableGrid1.Cells [1 , r]


как  найти  сколько дней разницы между ними  ?

Re: сравнить 2 даты

А как эту строчку приравнять к переменной?
Form2.Edit2.value := abs(Trunc(form2.datetimepicker2.datetime - form2.datetimepicker1.datetime)+1);
нужно что то похожее на
m := abs(Trunc(form2.datetimepicker2.datetime - form2.datetimepicker1.datetime)+1);

Re: сравнить 2 даты

есть такой вариант. Он правильный?
Form2.Edit2.value := abs(Trunc(form2.datetimepicker2.datetime - form2.datetimepicker1.datetime)+1);
m := Form2.Edit2.text;

Re: сравнить 2 даты

Здравствуй Agatlogic,
Создайте переменную с типом «tdatetime» (см. Пример).
Derek

Post's attachments

Attachment icon Days between dates.zip 337.37 kb, 250 downloads since 2020-02-18