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

Вниз

А как вычитать даты?   Найти похожие ветки 

 
Malamba   (2003-05-08 09:32) [0]

Может, глупый вопрос, но нигде ответа я не нашел.
Есть ли в Дельфи функция типа DateDiff из VisualBasic?

Она показывает разницу между двумя датами с учетом вск, субботы.
Т. е показывает кол-во рабочих дней.


А как находить разницу между датами в Дельфи?


Александр


 
WarLord ©   (2003-05-08 09:48) [1]

Date1-Date2=XXX.YYY, где XXX - число дней, YYY - часы, минуты, секунды и т.д.


 
malabma   (2003-05-08 09:56) [2]

И только-то?



 
WarLord ©   (2003-05-08 09:58) [3]

а что, мало?


 
Malamba   (2003-05-08 10:01) [4]

Именно этого я и боялся.
А есть ли что-нибудь продвинутое, чтобы получать разницу именно в рабочих днях, без вычета суббот, воскресенья ( праздников и запоев...)

А может, я чересчур многое хочу?


 
Zacho ©   (2003-05-08 10:05) [5]


> malabma (08.05.03 09:56)

Еще есть DaysBetween и т.п. Смотри в хелпе раздел Date/time routines


 
Anatoly Podgoretsky ©   (2003-05-08 10:28) [6]

Много хочешь, слишком многого.


 
Johnmen ©   (2003-05-08 10:29) [7]

Есть такая функция !
MWT:=GetMyWorkingTime(DateTimeBegin,DateTimeEnd);
эта функция учитывает не только праздники и дни твоих запоев, но и твои опоздания на работу и преждевременные уходы с нее !


 
Bel ©   (2003-05-08 10:31) [8]

Если ты посмотришь на объявление типа TDateTime, то увидишь, что это просто число:
type TDateTime = type Double;
Поэтому к нему применима обычная арифметика.


 
NewN ©   (2003-05-08 10:33) [9]

Если "без вычета выходных", то -WarLord © (08.05.03 09:48), а если без учёта, то надо самому писать.


 
WarLord ©   (2003-05-08 10:33) [10]


> Johnmen © (08.05.03 10:29)
> Есть такая функция !
> MWT:=GetMyWorkingTime(DateTimeBegin,DateTimeEnd);
> эта функция учитывает не только праздники и дни твоих запоев,
> но и твои опоздания на работу и преждевременные уходы с
> нее !

исходник, пожалуйста, в студию! ;))))


 
Anatoly Podgoretsky ©   (2003-05-08 10:43) [11]

function GetMyWorkingTime(DateTimeBegin,DateTimeEnd): TDateTime;
begin
Result := DbQuery(DateTimeBegin,DateTimeEnd,Range)-DbQuery(DateTimeBegin,DateTimeEnd,Happyend)-DbQuery(DateTimeBegin,DateTimeEnd,Zapoi);
end;


 
NewN ©   (2003-05-08 10:51) [12]

Function IsZapoy: Boolean;
Bagin
Result:= True;
For i:= Now - 3 do
Result:= Result and (GetAlcogolInBloodEx(Self) > 0.5 * PROMILE);
ShowMessage("Sorry za OffTopic!");
And;


 
WarLord ©   (2003-05-08 11:07) [13]


> Anatoly Podgoretsky ©


> NewN ©

класс!


 
Anatoly Podgoretsky ©   (2003-05-08 12:37) [14]

Зря смеешься, здесь дан алгоритм для построения нужной функции.


 
WarLord ©   (2003-05-08 12:39) [15]

я в этом не сомневаюсь


 
malamba   (2003-05-08 14:37) [16]

Всем сапасибо.
Пойду напьюсь снова.


 
Verg ©   (2003-05-08 14:57) [17]

Не,... ВСЕ НАШИ праздники никакая функция даже из многоуважаемого Васика не учтет!
Так что, предложение одно(точнее два) - использовать операцию минус (-) (сиплюсплюсам прошу не беспокоиться) или (вариант второй): напиться...(с сиплюсплюсами вместе) а потом все равно - минус... :))


 
Anatoly Podgoretsky ©   (2003-05-08 15:11) [18]

malamba (08.05.03 14:37)
Повторять до прояснения


 
chuvak   (2003-05-17 21:38) [19]

THours=byte;
TYear=array [1..357] of THours;

Var WorkTime,HappyTime:TYear;

В WorkTime заполни рабочее время без учетов прозников.
Например так:
for j:=0 to 50 do begin
for i:=1 to 5 do // Если пятидневка
WorkTime[(j*7)+i]:=8; // Если восьми часовой рабочий день
WorkTime[(j*7)+6]:=0;
WorkTime[(j*7)+7]:=0;
end;

В HappyTime заполни красные дни, не равные нулю, лучше всего
сделать интерфейс для заполнения этих данных
Или вот так:
HappyTime[1]:=1 //Новый год
HappyTime[31+28+8]:=1 //8-мое марта

А потом сделай функцию которой передается ДатаС и ДатаПо. А она будет пробегать по WorkTime и сумировать часы, если в HappyTime=0



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

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

Наверх




Память: 0.51 MB
Время: 0.012 c
1-94885
neon45
2003-05-15 22:57
2003.05.29
Как сделать, чтобы запускалась только одна копия КОНСОЛЬНОГО прил


14-95112
Yorick
2003-05-03 20:27
2003.05.29
---|Ветка была без названия|---


8-94969
AngelSaint
2002-12-20 09:45
2003.05.29
Как программировать Sound Blaster


9-94650
ogo
2002-12-15 10:41
2003.05.29
текстурирование


1-94801
*pavel
2003-05-19 10:41
2003.05.29
Свой масштаб в JPEG