Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
7-95136
acsoft
2003-03-31 08:00
2003.05.29
Как программно скопировать нужные ключи реестра в файл *.reg


1-94955
Vulko
2003-05-17 22:44
2003.05.29
Как вызвать стандартный диалог выбора папки


14-95031
AFrolov
2003-05-13 13:37
2003.05.29
Численный поиск корней функции


3-94692
Fedja
2003-05-07 18:09
2003.05.29
Заголовок DBGrid


3-94678
Raduga
2003-05-12 19:41
2003.05.29
TADOQuery и память





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский