Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Нужна помощь [D7, XP]


Страницы:   1 2

Прохожев Максим ©   (2007-02-16 10:18:00) 

Добрый день !!! Мне нужна помощь, я только изучаю дельфи, не могу решить самостоятельно. В общем есть функция которая подсчитывает количество дней между двумя датами, появилась необходимость откорректировать эту функцию так, что бы она брала по умолчанию 30 дней за месяц (любой месяц) Помогите исправить ее так. Заранее спасибо.

function DaysBetween(d1 : Integer;
    m1 : Integer;
    y1 : Integer;
    d2 : Integer;
    m2 : Integer;
    y2 : Integer):Integer;forward;

function DaysBetween(d1 : Integer;
    m1 : Integer;
    y1 : Integer;
    d2 : Integer;
    m2 : Integer;
    y2 : Integer):Integer;
var
   n1 : Integer;
   n2 : Integer;
begin
   if m1>2 then
   begin
       m1 := m1+1;
   end
   else
   begin
       m1 := m1+13;
       y1 := y1-1;
   end;
   n1 := 36525*y1 div 100+306*m1 div 10+d1;
   if m2>2 then
   begin
       m2 := m2+1;
   end
   else
   begin
       m2 := m2+13;
       y2 := y2-1;
   end;
   n2 := 36525*y2 div 100+306*m2 div 10+d2;
   Result := n2-n1;
end;


Прохожев Максим   (2007-02-16 11:00:00) [21]

В году 360 дней должно быть.


Прохожев Максим   (2007-02-16 10:58:00) [22]

Пример:

01.01.2006 по 01.02.2006 = 30 дней

01.01.2006 по 10.02.2006 = 39 дней


ЮЮ   (2007-02-16 10:47:00) [23]

Уточни ТЗ у руководителя.
Нужно, чтобы между 01.01.06 и 01.01.07 было ровно 360 дней?
Сколько должно быть между
01.01.06 и 31.12.06 ?
01.01.06 и 30.12.06 ?

Ты же считаешь   DaysBetween, которое вычисляется абсольно точно.
Я понимаю, еслибв надо бвло найти кол-во целых месяцев + дней. А здесь зачем извращения?


Сергей М.   (2007-02-16 10:45:00) [24]


> Рамиль ©   (16.02.07 10:41) [9]


Функция-то у автора называется DaysBetween, а не MonthsBetween


Сергей М.   (2007-02-16 10:44:00) [25]

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

Если так, то каковы правила округления ?


Рамиль   (2007-02-16 10:41:00) [26]


> Прохожев Максим   (16.02.07 10:31) [5]
>
> Обсолютно все месяца по умолчанию должны быть как 30 дней.
>

Насколько я понял

Result := (Date2 - Date1) / 30


Прохожев Максим   (2007-02-16 10:39:00) [27]

> Объясни вразумительно ...

В общем такая ситуация. Мне дали тех.задание на работе (Кредитный отдел)
написать программу там по отчетам всяким с выгрузкой в Excel. Есть формула где для подсчета необходимо количество дней между датами. Раньше я просто с помощью данной функции подсчитывал дни между двумя датами, и программа работала отлично . Сегодня мне сообщили что наш кредитный отдел округляет месяца по 30 дней. Это уже не моя инициатива, я просто тот кто должен делать то, что сказали. Соответственно теперь программа решает не правильно так как в разных месяцах разные количество дней.


Elen   (2007-02-16 10:33:00) [28]


> Прохожев Максим   (16.02.07 10:18)

DaysBetween из модуля DateUtils


Сергей М.   (2007-02-16 10:32:00) [29]


> Обсолютно все месяца по умолчанию должны быть как 30 дней.


Бред какой-то...

Что за "умолчание" ?
Где и как ты что-то там "умалчиваешь" ?
Объясни вразумительно ...


Прохожев Максим   (2007-02-16 10:31:00) [30]

> Особенно февраль

Обсолютно все месяца по умолчанию должны быть как 30 дней.


Сергей М.   (2007-02-16 10:29:00) [31]


> 30 дней за месяц (любой месяц)


Особенно февраль ?


Прохожев Максим   (2007-02-16 10:26:00) [32]

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


Рамиль   (2007-02-16 10:25:00) [33]

Вобщем случае разница в днях это просто Date2 - Date1

P. S. IncDay круче :).


Johnmen   (2007-02-16 10:21:00) [34]

Чтобы не заниматься ерундой, почитай хелп на TDateTime и далее по ссылкам. Это основы.


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо