![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Не правильно работает MonthsBetween [D7, WinXP]
kyn66 © (2009-02-06 11:42:00)Добрый день. Использую RX компонент function MonthsBetween(Date1, Date2: TDateTime): Double;
Впервые пришлось его применить . Однако после применения обнаружил неверно выдаваемые результаты. Вот оригинальная функция:
function MonthsBetween(Date1, Date2: TDateTime): Double;
var
D, M, Y: Word;
begin
DateDiff(Date1, Date2, D, M, Y);
Result := 12 * Y + M;
if (D > 1) and (D < 7) then Result := Result + 0.25
else if (D >= 7) and (D < 15) then Result := Result + 0.5
else if (D >= 15) and (D < 21) then Result := Result + 0.75
else if (D >= 21) then Result := Result + 1;
end;
У меня разница в датах 22 дня. Т.е. по идее функция перемещается на строку else if (D >= 21) then Result := Result + 1; и получается на выходе 1. Т.е. разница в датах = 1 мес. Это в корне неверно. 22 дня и 2 мес. Почему так? В чем дело? Как лечить?
Jeer (2009-02-06 12:22:00) [61]
> Однако после применения обнаружил неверно выдаваемые результаты.
Это с твоей точки зрения.
Напиши свою - "правильную" реализацию.
Там все прозрачно.
Сергей М. (2009-02-06 12:10:00) [62]
> дальше будем по делу обсуждать?
Будем, если ты приведешь оригинальный текст всего того, что скрывается за DateDiff, а также конкретные Double-значение, которые ты передаешь вх.параметрами в метод MonthsBetween
kyn66 (2009-02-06 12:07:00) [63]>Сергей М
Ну мастер такого класса мог догадаться, что это опечатка была, ессно метод. Я думаю дальше будем по делу обсуждать? ;)
Сергей М. (2009-02-06 11:59:00) [64]
> Использую RX компонент function MonthsBetween
Это что,так компонентназывается ?
Или это методкакого-то оригинального классаиз RXLib ?