Форум: "Основная";
Текущий архив: 2003.08.04;
Скачать: [xml.tar.bz2];
ВнизКоличество дней между датами? Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.5 MB
Время: 0.009 c