Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.5 MB
Время: 0.02 c
11-10150
Arhangel
2002-12-01 22:19
2003.08.04
Как узнать Handle у кол формы?


14-10429
Vlad Oshin
2003-07-16 15:40
2003.08.04
Боитесь ли Вы виртуальной жизни?


14-10448
AlexG
2003-07-18 08:56
2003.08.04
LocalSQL


4-10497
Flex
2003-05-31 14:54
2003.08.04
/ Помогите понять Msg.Result:=1 /


14-10380
Карлсон
2003-07-16 15:15
2003.08.04
log от числа




   Наверх