Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.03.2016, 16:54   #11
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Цитата:
Сообщение от newerow1989 Посмотреть сообщение
Пожалуйста!

Smitt&Wesson, это раздел "Общие вопросы Delphi"
А я сразу сделал оговорку, что на PHP. Ну, на дельфине у меня алгоритмов нет.
Либо так. Либо - никак. Выбора нет.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума Ответить с цитированием
Старый 12.03.2016, 16:55   #12
newerow1989
Я самый любопытный
Участник клуба
 
Аватар для newerow1989
 
Регистрация: 24.07.2012
Сообщений: 1,981
По умолчанию

Dux, мои посты на делфи написаны
С запрограммированным приветом, Неверов Евгений!
Сайт: http://newerow1989.ru
[Паскаль] [Delphi]
newerow1989 вне форума Ответить с цитированием
Старый 12.03.2016, 16:56   #13
Dux
Delphi Master
Форумчанин Подтвердите свой е-майл
 
Аватар для Dux
 
Регистрация: 31.03.2008
Сообщений: 803
По умолчанию

Цитата:
Сообщение от newerow1989 Посмотреть сообщение
Dux, мои посты на делфи написаны
Та я с ними и работаю сейчас, но как я написал выше, считает некорректно. Пост #8
Dux вне форума Ответить с цитированием
Старый 12.03.2016, 16:59   #14
newerow1989
Я самый любопытный
Участник клуба
 
Аватар для newerow1989
 
Регистрация: 24.07.2012
Сообщений: 1,981
По умолчанию

А что неправильно?
С запрограммированным приветом, Неверов Евгений!
Сайт: http://newerow1989.ru
[Паскаль] [Delphi]
newerow1989 вне форума Ответить с цитированием
Старый 12.03.2016, 17:00   #15
Dux
Delphi Master
Форумчанин Подтвердите свой е-майл
 
Аватар для Dux
 
Регистрация: 31.03.2008
Сообщений: 803
По умолчанию

Цитата:
Сообщение от newerow1989 Посмотреть сообщение
А что неправильно?
Повторюсь

Если ввести даты:

12.02.2016 и 12.03.2016 программа выдает 1 месяц и 29 дней..

А фактически между датами 1 месяц и 0 дней, либо меньше месяца,т.к. в феврале 29

Да и дни считаются неправильно, Ваш алгоритм выдает все дни, а не остаток дней.

Последний раз редактировалось Dux; 12.03.2016 в 17:09.
Dux вне форума Ответить с цитированием
Старый 12.03.2016, 17:12   #16
newerow1989
Я самый любопытный
Участник клуба
 
Аватар для newerow1989
 
Регистрация: 24.07.2012
Сообщений: 1,981
По умолчанию

Исправил:
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
from_date, to_date:TDate;
days,Full_months,i,k:integer;
d1,d2,m1,m2,y1,y2:word;
DayTable:tDayTable;
begin
to_date:=DateTimePicker1.DateTime;
from_date:=DateTimePicker2.DateTime;

DecodeDate(from_date,y1,m1,d1);
DecodeDate(to_date,y2,m2,d2);


Full_Months:=(y1-y2)*12+(m1-m2);
If d1<d2 then
   Full_Months:=Full_Months-1;

Days:=Round(from_date-to_date);
For i:=1 to Full_Months do
begin
   DayTable:=MonthDays[IsLeapYear(y2)];
   k:=DayTable[m2];
   Days:=Days-k;
   m2:=m2+1;
   If m2>12 then
   begin
      y2:=y2+1;
      m2:=1;
   end;
end;

Edit1.Text:=inttostr(Full_months);
Edit2.Text:=inttostr(days);
end;
С запрограммированным приветом, Неверов Евгений!
Сайт: http://newerow1989.ru
[Паскаль] [Delphi]
newerow1989 вне форума Ответить с цитированием
Старый 12.03.2016, 17:32   #17
Dux
Delphi Master
Форумчанин Подтвердите свой е-майл
 
Аватар для Dux
 
Регистрация: 31.03.2008
Сообщений: 803
По умолчанию

Вот спасибо огромное!!! Работает!
Dux вне форума Ответить с цитированием
Старый 12.03.2016, 17:34   #18
newerow1989
Я самый любопытный
Участник клуба
 
Аватар для newerow1989
 
Регистрация: 24.07.2012
Сообщений: 1,981
По умолчанию

Пожалуйста!
С запрограммированным приветом, Неверов Евгений!
Сайт: http://newerow1989.ru
[Паскаль] [Delphi]
newerow1989 вне форума Ответить с цитированием
Старый 12.03.2016, 17:45   #19
Dux
Delphi Master
Форумчанин Подтвердите свой е-майл
 
Аватар для Dux
 
Регистрация: 31.03.2008
Сообщений: 803
По умолчанию

Цитата:
Сообщение от newerow1989 Посмотреть сообщение
Пожалуйста!
Единственное - есть один неприятный БАГ

07.11.2016 - 06.03.2017 - 3 месяца 27 дней (Пересчитал фактически по календарю получается 3 месяца 31 день)

а если изменить на 1 день

07.11.2016 - 07.03.2017 - 4 месяца 0 дней

Т.е. количество дней в месяцах не учитывается, либо учитывается некорректно.

Можно ли как-то загнать в массив кол-во дней в каждом месяце и потом уже с ними оперировать?
Dux вне форума Ответить с цитированием
Старый 12.03.2016, 17:50   #20
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Код:
Format('между датами %dмес %dдн',[MonthsBetween(d2,d1),DaysBetween(IncMonth(d2,-MonthsBetween(d2,d1)),d1)]);
юнит DateUtils
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Количество дней между датами (Delphi) TyTan Помощь студентам 14 15.12.2022 11:36
Как в MS Excel рассчитать количество полных месяцев между двумя датами? moonlightchild Microsoft Office Excel 2 28.12.2012 13:20
Даны a1,b1,c1, и a2,b2,c2 которые обозначают две даты. Нужно вычислить кол-во дней между этими датами Рафиль Паскаль, Turbo Pascal, PascalABC.NET 6 21.10.2011 10:34
С++: найти число дней между 2 датами kissel Помощь студентам 2 15.03.2009 17:18