![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Нужна помощь [D7, XP]
Прохожев Максим © (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 и далее по ссылкам. Это основы.