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

Вниз

Количество дней между датами?   Найти похожие ветки 

 
off ©   (2003-07-14 14:42) [0]

Есть две даты в формате String. Как получить кол-во дней между ними?


 
Семен Сорокин ©   (2003-07-14 14:44) [1]

Result := Floor(StrToDate(str2) - StrToDate(str1))


 
off ©   (2003-07-14 14:47) [2]

Не помогает все равно 0 выдает


 
NickBat ©   (2003-07-14 14:57) [3]

DaysBetween


 
Palladin ©   (2003-07-14 14:57) [4]

значит даты одинаковые


 
off ©   (2003-07-15 06:21) [5]

> Palladin © (14.07.03 14:57)
Не цифры я пока между собой различаю


 
off ©   (2003-07-15 06:26) [6]

Хотя попробовал написать в отдельном проекте, так все работает. А вот при работе с InterBase по непонятной мне причине глючит :-(
Всем спасибо, попробую побороть этот баг.


 
Anatoly Podgoretsky ©   (2003-07-15 09:16) [7]

А ты не так пиши, а так
Result := TRUNC(StrToDate(D1)) - TRUNC(StrToDate(D2));
и это будет правильно.



 
Song ©   (2003-07-15 21:45) [8]

DateOf(первая)-DateOf(вторая)


 
off ©   (2003-07-21 13:29) [9]

А количество месяцев?


 
Anatoly Podgoretsky ©   (2003-07-21 13:44) [10]

А сколько дней в месяце?


 
off ©   (2003-07-21 13:51) [11]


> Anatoly Podgoretsky © (21.07.03 13:44)
> А сколько дней в месяце?

Зависит от месяца!


 
off ©   (2003-07-22 08:47) [12]

А есть ли функция определения количеста дней в месяце или так считать придется?


 
Anatoly Podgoretsky ©   (2003-07-22 08:52) [13]

А причем тут месяц, когда после d1-d2 ты получишь скажем 30 дней и что ты будешь делать после этого


 
Zew ©   (2003-07-22 08:54) [14]



> А сколько дней в месяце?

Около 30 помойму


 
off ©   (2003-07-22 08:58) [15]

У меня на календарный месяц полагается норма (50 Mb), причем вне зависимости от продолжительности месяца. А если юзер юзал нетворк не весь месяц, а n-дней? Тогда надо посчитать сколько Мб юзверю полагается по нормативу в жтом месяце. Я бы использовал период в 30 дней, но начальство против


 
Still Swamp   (2003-07-22 09:12) [16]

Может я что пропустил, но
Result:integer;
DateBegin,DateEnd:TDateTime;

Result:=Trunc(DateEnd-DateBegin);

Целочисленное значение типа TDateTime - это дни. Дробное доли дня.


 
Anatoly Podgoretsky ©   (2003-07-22 09:14) [17]

Это совсем другой вопрос.
Тут не количество дней между датами, а контретный месяц, которы определяется так 1.mm.yyyy - last.mm.yyyy
А количество дней или по встроенным функциям или по формуле
N := 1.mm+1.yyyy(+перенос) - 1.mm.yyyy
ну а расчет по еще более простой формуле mb/n*k, учесть при неоюходимости не рабочии дни, если квота на них не распространяется, тогда n1 := n - holydays
В общем учебник по математике Пупкина.


 
off ©   (2003-07-22 09:21) [18]

Спасибо Anatoly я думал, может уже есть функция которая достает колво дней в месяце, ну так чтобы совсем ничего не считать.


 
dataMaster ©   (2003-07-22 09:33) [19]

function DifferenceDate(Date1, Date2:TDateTime):integer;
var
ds1, ds2:TTimeStamp;
begin
ds1:=DateTimeToTimeStamp(Date1);
ds2:=DateTimeToTimeStamp(Date2);
Result:=ds1.Date-ds2.Date;
end;


 
ValeraVV ©   (2003-07-22 09:33) [20]

DaysInAMonth function
Returns the number of days in a specified month of a specified year.
Unit:DateUtils
Delphi syntax: function DaysInAMonth(const AYear, AMonth: Word): Word;





 
off ©   (2003-07-22 09:49) [21]

Валерий Валерьевич, вы просто умница!



 
KPP   (2003-07-22 09:51) [22]

Если решать эту задачу(Есть две даты в формате String. Как получить кол-во дней между ними?) "в лоб", есть такой вариант:

//возвращает кол-во дней в месяце с учетом года
Function KolDayMoon(MM,YYYY:integer):byte;
begin
case MM of
1,3,5,7,8,10,12:result:=31;
2:begin
if IsLeapYear(YYYY)then result:=29
else result:=28;
end;
4,6,9,11:result:=30;
end;
end;


//разница в днях между двумя датами
Function RaznDayIn2Date(YYYYMMDD1,YYYYMMDD2:string):integer;
var
YYYY1,
YYYY2,
YYYY :integer;
i,MM1,DD1,MM2,DD2,MM,DD:byte;
Prom:string;

begin
result:=0;
if(StrToInt(YYYYMMDD2)=StrToInt(YYYYMMDD1))then exit;
if(StrToInt(YYYYMMDD2)>StrToInt(YYYYMMDD1))then begin
result:=-3;
exit;
Prom:=YYYYMMDD2;
YYYYMMDD2:=YYYYMMDD1;
YYYYMMDD1:=Prom;
end;
try
YYYY1:=StrToInt(copy(YYYYMMDD1,1,4));
MM1 :=StrToInt(copy(YYYYMMDD1,5,2));
DD1 :=StrToInt(copy(YYYYMMDD1,7,2));
except
result:=-1;
exit;
end;
try
YYYY2:=StrToInt(copy(YYYYMMDD2,1,4));
MM2 :=StrToInt(copy(YYYYMMDD2,5,2));
DD2 :=StrToInt(copy(YYYYMMDD2,7,2));
except
result:=-2;
exit;
end;

if DD1>DD2 then DD:=DD1-DD2
else begin
if MM1=1 then begin
MM1:=12;
dec(YYYY1);
end
else dec(MM1);
DD:=(DD1+KolDayMoon(MM1,YYYY1))-DD2;
end;
if MM1>=MM2 then MM:=MM1-MM2
else begin
MM:=(MM1+12)-MM2;
dec(YYYY1);
end;
YYYY:=YYYY1-YYYY2;

if YYYY<0 then begin
YYYY:=0;
//showmessage("Караул!");
end;

while YYYY<>0 do begin
if IsLeapYear(YYYY)then result:=result+366
else result:=result+365;
dec(YYYY);
end;
i:=0;
while MM<>i do begin
if (MM2+i)>12 then begin
MM2:=1;
inc(YYYY2);
end;
result:=result+KolDayMoon(MM2+i,YYYY2);
inc(i);
end;
result:=result+DD;
end;

может и топорно, но работает уже 4 года



 
KPP   (2003-07-22 09:54) [23]

Если решать эту задачу(Есть две даты в формате String. Как получить кол-во дней между ними?) "в лоб", есть такой вариант:

//возвращает кол-во дней в месяце с учетом года
Function KolDayMoon(MM,YYYY:integer):byte;
begin
case MM of
1,3,5,7,8,10,12:result:=31;
2:begin
if IsLeapYear(YYYY)then result:=29
else result:=28;
end;
4,6,9,11:result:=30;
end;
end;


 
KPP   (2003-07-22 09:55) [24]

прошу прощение за повторение - инет глюкнул ;((


 
Gooz   (2003-07-22 09:56) [25]

Удалено модератором
Примечание: Задай этот вопрос в потрепаться



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

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

Наверх




Память: 0.52 MB
Время: 0.019 c
14-10411
tovSuhov
2003-07-17 13:36
2003.08.04
Вопрос немного не из той степи...


4-10525
ych_boriss
2003-06-03 12:37
2003.08.04
мессаги WM_MOUSELEAVE, WM_MOUSEHOVER.


4-10506
SeNtiMeL
2003-06-01 19:42
2003.08.04
Как TEdit другого приложения присвоить текст и послать ENTER


14-10436
Zn
2003-07-17 18:20
2003.08.04
Почему приложения Microsoft загружаются быстрее?


3-10120
Vorobyev Sergey
2003-07-14 11:38
2003.08.04
Где в системных таблицах IB информация о текущих подключениях?