Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2005.01.02;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.55 MB
Время: 0.035 c
3-1102246400
Paradox
2004-12-05 14:33
2005.01.02
кол-во подчиненных записей...


1-1103323717
Вопрос
2004-12-18 01:48
2005.01.02
WorkSheets в EXCEL


1-1103207093
Bless
2004-12-16 17:24
2005.01.02
Что вызывается вместо inherited в данном случае?


3-1102142124
lexales
2004-12-04 09:35
2005.01.02
Проблемы с базой данных


9-1094900894
Navi
2004-09-11 15:08
2005.01.02
Линия в ОpenGL





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский