![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Подскажите алгоритм как вычислить количество дней между датами
pinokio © (2004-12-16 15:47:00)Добрый день..
Подскажите алгоритм как вычислить количество дней между двумя датами....
мне нужен именно алгоритм.
Reindeer Moss Eater (2004-12-16 19:34:00) [1]Разница в днях:=TO_DATE(строка1) - TO_DATE('строка2');
jack128 (2004-12-16 18:51:00) [2]ЯХДР. Правельный ник выбрал, парень.
Плохиш (2004-12-16 18:43:00) [3]http://www.delphimaster.ru/cgi-bin/forum.pl?id=1102690000&n=3
;-)
Алхимик (2004-12-16 18:32:00) [4]
> [24] Суслик © (16.12.04 18:29)
Гы.
Алхимик (2004-12-16 18:32:00) [5]
> :)))))))
Ну что ты ржёшь?
Сена хошь?
Суслик (2004-12-16 18:29:00) [6]
> :)))))))
шо ты ржешь.
если оракле, то и смотри в его хелпе
Verg (2004-12-16 18:29:00) [7]Выцепляешь из строки день, месяц и год (парсингом! Как делается парсинг надо объяснять?) преобразуешь их в целые без знака и подставляешь в соответствующие параметры EncodeDate.
На всякий случай даю исходники EncodeDate:
type
PDayTable = ^TDayTable;
TDayTable = array[1..12] of Word;
const
MonthDays: array [Boolean] of TDayTable =
((31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31),
(31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31));
DateDelta = 693594;
function IsLeapYear(Year: Word): Boolean;
begin
Result := (Year mod 4 = 0) and ((Year mod 100 <> 0) or (Year mod 400 = 0));
end;
function TryEncodeDate(Year, Month, Day: Word; out Date: TDateTime): Boolean;
var
I: Integer;
DayTable: PDayTable;
begin
Result := False;
DayTable := @MonthDays[IsLeapYear(Year)];
if (Year >= 1) and (Year <= 9999) and (Month >= 1) and (Month <= 12) and
(Day >= 1) and (Day <= DayTable^[Month]) then
begin
for I := 1 to Month - 1 do Inc(Day, DayTable^[I]);
I := Year - 1;
Date := I * 365 + I div 4 - I div 100 + I div 400 + Day - DateDelta;
Result := True;
end;
end;
pinokio (2004-12-16 18:27:00) [8]да нет у меня Delphi
Doudle = 24.10.2004
Поясняю к примеру 24.10.2004 в Oracle явно не в таком формате храниться
:)))))))
Алхимик (2004-12-16 18:18:00) [9]
> у меня нет формата TDateTime
TDateTime = Double
Папа Карло (2004-12-16 18:18:00) [10]Буратино.
Не тормози.
Не надо ничего нигде брать. Набери TDateTime. Нажми f1. Почитай хелп. Если тебя удовлетворит такой подход (где 1 = 1 день), то используй его.
pinokio (2004-12-16 18:15:00) [11]:))))
у меня нет формата TDateTime
его надо где-то взять :)
Блин ладно сам уже придумал как сделать....
Verg (2004-12-16 18:12:00) [12]
> вот я и спрашиваю алгоритм (мне все надо сделать руками)....
Алгоритм преобразования даты в текстовом представлении в TDateTime? Это что ли?
Verg (2004-12-16 18:09:00) [13]
function SpanOfNowAndThen(const ANow, AThen: TDateTime): TDateTime;
begin
if ANow < AThen then
Result := AThen - ANow
else
Result := ANow - AThen;
end;
function DaySpan(const ANow, AThen: TDateTime): Double;
begin
Result := SpanOfNowAndThen(ANow, AThen);
end;
function DaysBetween(const ANow, AThen: TDateTime): Integer;
begin
Result := Trunc(DaySpan(ANow, AThen));
end;
pinokio (2004-12-16 18:06:00) [14]for Reindeer Moss Eater lol :)
ты формат дат видел если тебе не трудно отними из одной другую и получи разницу в 2 дня..
еще раз как ты предлогаешь делаю обстрактно:
result:= '24.10.2004' - '22.10.2004'
явно требуеться преобразование или ты не согласен?
вот я и спрашиваю алгоритм (мне все надо сделать руками)....
Reindeer Moss Eater (2004-12-16 17:58:00) [15]Разница дат в любом языке - это и есть количество дней.
Это и есть алгоритм.
Вычесть из большего меньшее.
pinokio (2004-12-16 17:55:00) [16]Кто нибуть алгоритм может подсказать как к примеру работает функция
betweenday() или betweenmonth вроде так давно Delphi не использую и
под рукой его у меня тоже нет чтобы исходники функций посмотреть..
Reindeer Moss Eater (2004-12-16 17:52:00) [17]И в слове "предлагать" нет букв "О"
Александр Иванов (2004-12-16 17:51:00) [18]А на чем программа?
Во многих средах допустимо что-то вида [1].
Reindeer Moss Eater (2004-12-16 17:51:00) [19]Программа не на Delphi поэтому не стоит предлогать мне функции из Delphi я их и сам знаю...
Разница между датамив любом языке - это количество дней.
Reindeer Moss Eater (2004-12-16 17:49:00) [20]>Reindeer Moss Eater
result := '24.10.2004' -22.10.2004
и что получиться :)
Буратино, у тебя в вопросе датыфигурируют, а не строки