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