Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.01.02;
Скачать: CL | DM;

Вниз

Подскажите алгоритм как вычислить количество дней между датами   Найти похожие ветки 

 
pinokio   (2004-12-16 15:47) [0]

Добрый день..
Подскажите алгоритм как вычислить количество дней между двумя датами....

мне нужен именно алгоритм.


 
Reindeer Moss Eater ©   (2004-12-16 15:51) [1]

Result := x-y;


 
pinokio   (2004-12-16 15:55) [2]

смешно :)


 
Reindeer Moss Eater ©   (2004-12-16 15:56) [3]

Дык я знал, что ты будешь смеятся


 
pinokio   (2004-12-16 15:57) [4]

>Reindeer Moss Eater

result := "24.10.2004" -22.10.2004

и что получиться :)


 
Term   (2004-12-16 16:14) [5]

result:=StrToDate(x)-StrToDate(y)
в чём траблы то


 
Суслик ©   (2004-12-16 16:18) [6]

а правда смешно :)))


 
Плохиш ©   (2004-12-16 16:18) [7]


>pinokio   (16.12.04 15:57) [4]
>>Reindeer Moss Eater
>result := "24.10.2004" -22.10.2004

Сам-то понял, что написал?
К тому же то, что стоит после минуса вообще в синтаксис не укладывается.


 
pinokio   (2004-12-16 17:46) [8]

for Плохиш: Блин вот ты умный какой...
Я всего лишь попросил алгоритм как вычеслить период между двумя датами даты храняться в формате "dd.mm.yyyy h24:mi:ss"
Программа не на Delphi поэтому не стоит предлогать мне функции из Delphi я их и сам знаю...


 
Суслик ©   (2004-12-16 17:48) [9]

ни этого,

> двумя датами даты храняться в формате "dd.mm.yyyy h24:mi:ss"


ни этого

> Программа не на Delphi


в вопросе не было.

Зачем грубить?


 
Reindeer Moss Eater ©   (2004-12-16 17:49) [10]

>Reindeer Moss Eater

result := "24.10.2004" -22.10.2004

и что получиться :)


Буратино, у тебя в вопросе даты фигурируют, а не строки


 
Reindeer Moss Eater ©   (2004-12-16 17:51) [11]

Программа не на Delphi поэтому не стоит предлогать мне функции из Delphi я их и сам знаю...
Разница между датами в любом языке - это количество дней.


 
Александр Иванов ©   (2004-12-16 17:51) [12]

А на чем программа?
Во многих средах допустимо что-то вида [1].


 
Reindeer Moss Eater ©   (2004-12-16 17:52) [13]

И в слове "предлагать" нет букв "О"


 
pinokio   (2004-12-16 17:55) [14]

Кто нибуть алгоритм может подсказать как к примеру работает функция
betweenday() или betweenmonth вроде так давно Delphi не использую и
под рукой его у меня тоже нет чтобы исходники функций посмотреть..


 
Reindeer Moss Eater ©   (2004-12-16 17:58) [15]

Разница дат в любом языке - это и есть количество дней.
Это и есть алгоритм.
Вычесть из большего меньшее.


 
pinokio   (2004-12-16 18:06) [16]

for Reindeer Moss Eater lol :)

ты формат дат видел если тебе не трудно отними из одной другую и получи разницу в 2 дня..
еще раз как ты предлогаешь делаю обстрактно:
result:= "24.10.2004" - "22.10.2004"

явно требуеться преобразование или ты не согласен?

вот я и спрашиваю алгоритм  (мне все надо сделать руками)....


 
Verg ©   (2004-12-16 18:09) [17]

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;


 
Verg ©   (2004-12-16 18:12) [18]


> вот я и спрашиваю алгоритм  (мне все надо сделать руками)....


Алгоритм преобразования даты в текстовом представлении в TDateTime? Это что ли?


 
pinokio   (2004-12-16 18:15) [19]

:))))
у меня нет формата TDateTime
его надо где-то взять :)

Блин ладно сам уже придумал как сделать....


 
Папа Карло   (2004-12-16 18:18) [20]

Буратино.
Не тормози.
Не надо ничего нигде брать. Набери TDateTime. Нажми f1. Почитай хелп. Если тебя удовлетворит такой подход (где 1 = 1 день), то используй его.


 
Алхимик ©   (2004-12-16 18:18) [21]


> у меня нет формата TDateTime

TDateTime = Double


 
pinokio   (2004-12-16 18:27) [22]

да нет у меня Delphi
Doudle = 24.10.2004
Поясняю к примеру 24.10.2004 в Oracle явно не в таком формате храниться

:)))))))


 
Verg ©   (2004-12-16 18:29) [23]

Выцепляешь из строки день, месяц и год (парсингом! Как делается парсинг надо объяснять?) преобразуешь их в целые без знака и подставляешь в соответствующие параметры 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;


 
Суслик ©   (2004-12-16 18:29) [24]


> :)))))))

шо ты ржешь.
если оракле, то и смотри в его хелпе


 
Алхимик ©   (2004-12-16 18:32) [25]


> :)))))))

Ну что ты ржёшь?
Сена хошь?


 
Алхимик ©   (2004-12-16 18:32) [26]


> [24] Суслик ©   (16.12.04 18:29)


Гы.


 
Плохиш ©   (2004-12-16 18:43) [27]

http://delphimaster.net/view/15-1102690000/

;-)


 
jack128 ©   (2004-12-16 18:51) [28]

ЯХДР. Правельный ник выбрал, парень.


 
Reindeer Moss Eater ©   (2004-12-16 19:34) [29]

Разница в днях:=TO_DATE(строка1) - TO_DATE("строка2");



Страницы: 1 вся ветка

Текущий архив: 2005.01.02;
Скачать: CL | DM;

Наверх




Память: 0.53 MB
Время: 0.084 c
14-1103033096
Danilka
2004-12-14 17:04
2005.01.02
Желаю удачи


14-1102582579
Кудесник
2004-12-09 11:56
2005.01.02
Может кто перевести страницу текста на нормальный английский?


14-1102051162
OneFragLeft
2004-12-03 08:19
2005.01.02
Apache


1-1103253401
SeZuka
2004-12-17 06:16
2005.01.02
FreeReport 2.3 принтер по умолчанию


14-1102802617
by
2004-12-12 01:03
2005.01.02
Что-то затронуло ...