1 (edited by sign2 2017-10-07 15:19:32)

Topic: Количество дней между двумя датами

Добрый день! Есть две записи дат, дата поступления в стационар и дата выписки из стационара. Подскажите пожалуйста, как подсчитать количество дней между датой поступления и датой выписки.

2 (edited by Raspr 2017-10-07 12:10:47)

Re: Количество дней между двумя датами

Пример на DateTimePicker.

procedure Form1_Button1_OnClick (Sender: string; Action: string);
var
    YY,MM,DD,YY2,MM2,DD2: integer;

begin
    DecodeDate(Form1.DateTimePicker1.Date, YY, MM, DD);
    DecodeDate(Form1.DateTimePicker2.Date, YY2, MM2, DD2);

    Form1.Label1.Caption := IntToStr(DD2-DD);
end;
Post's attachments

Attachment icon Date.rar 2.68 kb, 461 downloads since 2017-10-07 

Re: Количество дней между двумя датами

Допустим, мне надо подсчитать кол-во дней с 01.09.2017 по 07.10.2017, ваш пример выдает 6 дней, а фактически должно быть 37.
В чём загвоздка?

Re: Количество дней между двумя датами

Hello sign2

You could try this ::

procedure Form1_Button1_OnClick (Sender: string; var Cancel: boolean);
var    dt: TDateTime;
begin
     dt := Form1.DateTimePicker2.DateTime - Form1.DateTimePicker1.DateTime;
     ShowMessage(IntToStr(Trunc(dt)) + ' days');
end;

JB

Re: Количество дней между двумя датами

Спасибо JB

Re: Количество дней между двумя датами

Привет, Sign2
Возможно, это также так
Derek.

Post's attachments

Attachment icon sign2 dates.zip 335.32 kb, 469 downloads since 2017-10-08 

Re: Количество дней между двумя датами

Hello Derek, sign2

You're right, Derek

It is the eternal history of intervals.

If sign2 wants to go from the Monday to the following Monday included, he can add into my proposal :

ShowMessage(IntToStr(Trunc(dt)+1) + ' days');

The two ways are OK.

HAve a good day

JB

Re: Количество дней между двумя датами

Спасибо всем!

9 (edited by mcsimm 2017-10-11 05:21:27)

Re: Количество дней между двумя датами

Hmm... how many days between the same date? 0 or 1 ? I'm confused )))

Post's attachments

Attachment icon 2017-10-11_12-56-48.png 61.25 kb, 291 downloads since 2017-10-11 

Re: Количество дней между двумя датами

Hello Mcsimm

I did the test with my code (this day at 10H13, French time).
From 11/10/2017 to 11/10/2017 = 0 day

If in the system date windows, I advance one day (12/1082017 10:13)
the result is 1 day.

Does the calculation of dates take into account the day of the second date completed in the Windows timetable?
(No = 0 day - Yes = 1 day).

Seeking Dmitry's Opinion

To be debated !

Regards

JB

Re: Количество дней между двумя датами

Hello JB, Mcsimm, Sign2,
I think whether it is 0 days or 1 day perhaps depends on the context of the project. 
For this project, to be admitted and then discharged on the same day is 1 day, not 0 days.
I have changed my script to force days to show as whole numbers (no decimals) which may have caused some confusion.  Also, both dates must now be 'ticked' before the calculation is performed and there is a simple check for discharge date being >= admission date.
Derek.

Post's attachments

Attachment icon sign2 dates.zip 336.6 kb, 474 downloads since 2017-10-11 

12

Re: Количество дней между двумя датами

derek wrote:

Привет, Sign2
Возможно, это также так
Derek.


Добрый день
Ваш скрипт работает, алгоритм под себя переделал, почему-то у меня не работает

procedure Calculator_DateTimePicker1_OnChange (Sender: string);
begin
  Calculator.Edit7.Value:= Calculator.DateTimePicker2.DateTime - Calculator.DateTimePicker1.DateTime +1;
end;

procedure Calculator_DateTimePicker2_OnChange (Sender: string);
begin
  Calculator.Edit7.Value:= Calculator.DateTimePicker2.DateTime - Calculator.DateTimePicker1.DateTime +1;
end;

begin
end.

13 (edited by pixel7pro 2023-08-12 20:17:25)

Re: Количество дней между двумя датами

Доброй ночи.
Хотел бы возобновить эту тему.
Есть одно поле с датой (к примеру 12.08.2023)
Нужно из значения в этом поле (ДАТА) вычислить 730 дней (т.е.2 года) никуда больше не вводя никакие лишние значения.
И итоговое значение занести в таблицу к уже имеющимся там записям.
понимаю, что надо это сделать скриптом, скорее всего.

form1.edit1.value:= form1.datetimepicker2.DateTime    -      эти самые 730 дней 

вот как программе дать понять, что эти самые 730 - это дни


Подскажите - как это сделать? не могу взять в толк

14 (edited by sparrow 2023-08-13 07:14:00)

Re: Количество дней между двумя датами

Дата сохраняется как число дней ...

http://myvisualdatabase.com/help_ru/scr … etime.html

А как быть если год високосный ) ?

В MVD еще есть функция для работы с месяцами.

Re: Количество дней между двумя датами

function IncYear(ADate:TDateTime; AValue:integer):TDateTime;
// изменить дату на нужное число лет
begin
  Result := IncMonth(ADate,AValue*12);
end;
Визуальное программирование: блог и телеграм-канал.

Re: Количество дней между двумя датами

а можно все таки на живом примере?


в таблице в последней колонке у меня должна отображаться дата окончания срока действия (от выставленной даты  + 24 месяца).
Например, сегодня 13.08.2023,  а в  таблице должна стоять в последней колонке дата 13.08.2025

прикладываю мою поделку (для понимания)

Post's attachments

Attachment icon test.zip 602.65 kb, 53 downloads since 2023-08-13 

Re: Количество дней между двумя датами

strftime('%d.%m.%Y',"date"."date",'+2 year','localtime')  


и это плохая практика называть поля из списка зарезервированых слов.
Date, Time, .....

Re: Количество дней между двумя датами

sparrow wrote:
strftime('%d.%m.%Y',"date"."date",'+2 year','localtime')  


и это плохая практика называть поля из списка зарезервированых слов.
Date, Time, .....


а куда мне это вписывать? и все ли верно в остальном?

это скрипт?   или вычисляемое поле?

спасибо за помощь

Re: Количество дней между двумя датами

Подозрительно похоже на вычисляемое поле.

Re: Количество дней между двумя датами

Привет Pixelpro,
Я считаю, что «strftime» по умолчанию выводит текст, который затем неправильно сортирует столбец даты истечения срока действия.
Если для вас важна последовательность сортировки даты истечения срока действия, я бы с уважением предложил переопределить вычисляемое поле как «дата» и преобразовать вычисляемое поле «strftime» обратно из «текста» после того, как необходимое количество лет было добавлено.

Post's attachments

Attachment icon test suggestion.zip 336.59 kb, 64 downloads since 2023-08-13 

Re: Количество дней между двумя датами

sparrow wrote:
strftime('%d.%m.%Y',"date"."date",'+2 year','localtime')  


и это плохая практика называть поля из списка зарезервированых слов.
Date, Time, .....



проверил - может я ошибся (или я тупой, тоже вариант) - но ваш код не работает  (проверил разные варианты написания кода,   в таблице date поле end_finish сделал вычисляемым, и вставил ваш код)


поправьте, пожалуйста

Post's attachments

Attachment icon test.zip 604.91 kb, 65 downloads since 2023-08-13 

22 (edited by pixel7pro 2023-08-13 20:40:18)

Re: Количество дней между двумя датами

derek wrote:

Привет Pixelpro,
Я считаю, что «strftime» по умолчанию выводит текст, который затем неправильно сортирует столбец даты истечения срока действия.
Если для вас важна последовательность сортировки даты истечения срока действия, я бы с уважением предложил переопределить вычисляемое поле как «дата» и преобразовать вычисляемое поле «strftime» обратно из «текста» после того, как необходимое количество лет было добавлено.


спасибо огромное.  по вашему примеру все сделал.   и все работает!
сразу видно - человек знает  (а я тупой) (((




и последний вопрос  -    а как этот конечный результат преобразовать в дни?
т.е. к примеру к 13.08.2023 прибавить 2 года (а именно 730 дней)  - будет 13.08.2025 года   ( если можно учесть и високосные года)
но
-   к примеру от завтрашнего числа - останется уже 729 дней.


я вот именно про это спросить хочу
как это реализовать?

Re: Количество дней между двумя датами

Чтобы показать количество дней, оставшихся до истечения срока действия, попробуйте что-то вроде этого
Derek.

Post's attachments

Attachment icon test suggestion2.zip 436.98 kb, 68 downloads since 2023-08-14 

Re: Количество дней между двумя датами

у меня уже руки опускаются.
стоило поменять название колонки на свое  (и соответственно сменил названия в скрипте) - и стала ошибка вылазить.
я уже ничего не понимаю.   почему?!!!!

пожалуйста, разъясните мне, тупорылому, что во мне не так...

прикладываю измененный мною проект

Post's attachments

Attachment icon текущая дата (+2 года) остаток дней.zip 606.49 kb, 54 downloads since 2023-08-14 

Re: Количество дней между двумя датами

Вы не можете ссылаться на то же поле («end_days»), которое вы используете при фактическом расчете «end_days».
В дополнение к этому «вычисляемое поле» должно использовать «date_start», а не «end_days».
Derek.

Post's attachments

Attachment icon fixed.zip 336.43 kb, 61 downloads since 2023-08-14