![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Вычисления с TDateTime [D6, Win2k]
NightCon © (2002-09-19 13:10:00)Такая вот проблемка: нужно вычислить кол-во рабочих часов в периоде, заданном в двух TDateTime, но всю малину портит то, что при этом нужно учитывать, что в смене 8 часов, и еще есть праздники, рабочие выходные и т.д.
qube (2002-09-19 14:33:00) [1]Во-во, таблица БД -- это уже хорошая реализация множества.
А вообще в недавно вышедшей книженции Ахо, Ульмана и Хопкрофта оч. хорошо написано, как множества реализовывать, чтобы пользоваться было удобно и эффективно.
lenin (2002-09-19 14:27:00) [2]
> qube © (19.09.02 14:21)
TDateTime = type Double;
> NightCon (19.09.02 14:22)
Любыми. Можешь использовать текстовые файлы, БД,... Как тебе удобнее
NightCon (2002-09-19 14:22:00) [3]с этим вроде ясно, а как вводить даты с выходными в множество?
Это нужно делать раз в год но какими средствами/компонентами?
qube (2002-09-19 14:21:00) [4]Мне почему-то кажется, что TDateTime -- это не ordinal тип, и встроенным типом множества пользоваться нельзя, надо свой писать. Могу ошибаться.
Separator (2002-09-19 14:13:00) [5]var
NeRabDay: set of TDateTime = [.......];
Prostoi: integer = ...;
functinon (date1, date2: TDateTime): cardinal;
var
Res, i, k: cardinal;
begin
k:= 0;
for i:= trunc(Date1) to trunc(Date2) do {Date1<Date2}
if not (i in NRabDay) then
Inc(k);
K:= (K)*8-Prostoi
end;
Separator (2002-09-19 14:09:00) [6]Конкретно поясни что нужно?
NightCon (2002-09-19 14:01:00) [7]С рабочими было бы проще, но мне надо учитывать простой оборудования именно в рабочих часах. Т.е. пазванили - вызвали - пошло время простоя, запустили - простой кончился. А вторая таблица именно для рабочих выходных, если обычные выходные считать через DayOfWeek().
Separator (2002-09-19 13:57:00) [8]В общем так нужно:
1. множество нерабочих дней
2. количество пропущеных дней рабочим (по любым причинам)
3. и все, остальное считать
Anatoly Podgoretsky (2002-09-19 13:55:00) [9]Зачем две то, одной что ли не хватает, а считать например
ReadLn(F, a[i])
qube (2002-09-19 13:54:00) [10]зачем 2?
зачем различать выходные и праздники?
задаешь множество нерабочих дней, и все.
Separator (2002-09-19 13:54:00) [11]Тогда вообще надо задават на каждого рабочего таблицу, так как надо еще учесть больничные дни, отгулы и все такое
NightCon (2002-09-19 13:52:00) [12]вообще-то можно хранить несколько таблиц (две) одна с праздниками, а другая с рабочими выходными... но как это все считать?
Андрей Прокофьев (2002-09-19 13:51:00) [13]Возможны переносы выходных и проч.
Причем, на каждом предприятии это может происходить по-разному
Без таблицы и ее корректировки не обойтись.
lenin (2002-09-19 13:48:00) [14]
> Separator © (19.09.02 13:45)
Это бутет не совсем верно. Ведь рабочий день может быть и в субботу и в воскресенье. Выходные также надо задовать, как и праздники.
Separator (2002-09-19 13:45:00) [15]Выходные можно вычислисть с помощью DayOfWeek()
qube (2002-09-19 13:43:00) [16]
> qube © (19.09.02 13:24)
> да как угодно.
>
> праздники, выходные вычислить нельзя -- их нужно задавать
> (из файла грузить, например).
и я о том же
Anatoly Podgoretsky (2002-09-19 13:41:00) [17]А как ты иначе представляешь, на основании чего считать тот мли иной день праздничным, да и с выходными не все чисто
Separator (2002-09-19 13:39:00) [18]Ага, пока других решений не вижу, это самое оптимальное
qube (2002-09-19 13:36:00) [19]
> Вычислить надо
т.е. проблема остается. без календаря -- никуда.
Separator (2002-09-19 13:34:00) [20]> qube
Вычислить надо