Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/26: Рейтинг темы: голосов - 26, средняя оценка - 5.00
1 / 1 / 0
Регистрация: 03.04.2009
Сообщений: 38
1

Как прибавить к дате количество РАБОЧИХ дней

24.09.2009, 07:05. Показов 5339. Ответов 5
Метки нет (Все метки)

Уважаемые!
Подскажите, как решить вот такую задачу.
Имеется массив выходных и праздничных дней в году (String) в виде '01.01.2009','02.01.2009' и т.д.
Необходимо к исходной дате, например 23.12.2008, прибавить некоторое количество РАБОЧИХ дней, например 40,и получить конечную дату.
Надо понимать, что необходимо проверить массив выходных дней на наличие в нем следующих за исходной дат и если в массиве есть дата выходного (праздничного) дня, то ее не учитывать.
КАК ЭТО СДЕЛАТЬ? ПОМОГИТЕ!!!!

Заранее благногдарен
Al_Sha
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.09.2009, 07:05
Ответы с готовыми решениями:

К дате прибавить количество дней
Добрый день! Имеется задача: Необходимо к дате например (04.06.2013) прибавить количество дней,...

Прибавить к дате определенное количество рабочих дней
Доброго времени суток! Как можно прибавить к текущей дате N-ое количество рабочих дней? Есть ли...

Прибавить к текущей дате произвольное количество дней
Всем привет! Сегодня у меня простенький вопрос, надеюсь поможете... Делаю вывод даты в...

Прибавить к дате количество дней и проверить результат на соответствие условию
Подскажите скрипт для vba или sql-запроса: Из таблицы нужно взять значение из поля типа дата...

5
1850 / 1172 / 189
Регистрация: 27.03.2009
Сообщений: 4,511
24.09.2009, 10:49 2
а праздничные дни как будут прописаны и где?

Добавлено через 6 минут
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
var d,e:tdatetime;i:integer;
begin
edit1.Text:='23.12.2008';
d:=strtodate(edit1.Text);
i:=1;
while i<>40 do
begin
e:=strtodate('24.12.2008'); {это я проверил одну дату, а тебе нужно масив (вот только не знаю как он будет прописан)}
if d=e then
d:=d+1
else
begin
d:=d+1;
i:=i+1;
end;
end;
end;
0
1 / 1 / 0
Регистрация: 03.04.2009
Сообщений: 38
24.09.2009, 12:41  [ТС] 3
Массив будет прописан так
const NT = 24;
holyday:array[1..NT]of String =('01.01.2008','02.01.2008','03.01.2008',
'04.01.2008','07.01.2008','08.01.2008','25.02.2008','10.03.2 008','01.05.2008','02.05.2008','09.05.2008',
'12.06.2008','13.06.2008','03.11.2008','04.11.2008','01.01.2 009',
'02.01.2009','05.01.2009','06.01.2009','07.01.2009','08.01.2 009',
'09.01.2009','23.02.2009','09.03.2009');
0
1850 / 1172 / 189
Регистрация: 27.03.2009
Сообщений: 4,511
24.09.2009, 13:05 4
дай мне начальную дату и то что должно получится. хочу проверить

Добавлено через 12 минут
тогда както так

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
const NT = 24;
holyday:array[1..NT]of String =('01.01.2008','02.01.2008','03.01.2008',
'04.01.2008','07.01.2008','08.01.2008','25.02.2008 ','10.03.2008','01.05.2008','02.05.2008','09.05.2008',
'12.06.2008','13.06.2008','03.11.2008','04.11.2008 ','01.01.2009',
'02.01.2009','05.01.2009','06.01.2009','07.01.2009 ','08.01.2009',
'09.01.2009','23.02.2009','09.03.2009');
var d:tdatetime;i,j,t:integer;
begin
edit1.Text:='01.01.2008';
d:=strtodate(edit1.Text);
i:=1;
while i<nt do
 begin
  t:=0;
  for j:=1 to nt do
    if d=strtodate(holyday[j]) then
     t:=1;
  if t=1 then
   d:=d+1
  else
   begin
    d:=d+1;
    i:=i+1;
   end;
 end;
end;
1
1 / 1 / 0
Регистрация: 03.04.2009
Сообщений: 38
24.09.2009, 21:00  [ТС] 5
Спасибо большое, но...
Может я что-то не понимаю, но как-то не просматривается то самое число (из примера выше - 40 рабочих дней) которое надо прибавить к исходной дате.
С уважением
Al_Sha
0
1850 / 1172 / 189
Регистрация: 27.03.2009
Сообщений: 4,511
25.09.2009, 10:57 6
что ты имеешь ввиду? если не то, дай мне примерную дату начала, и что должно получится в результате для этого примера и я проверю.
в данном примере я сверял если число не равно значениям из Holyday и увеличивал дату на 1 до количества рабочих дней.

Добавлено через 1 час 27 минут
вобщето я просчитывал для const NT=24. если хочешь поменяй
Цитата Сообщение от unick12345 Посмотреть сообщение
while i<nt do
вместо nt чтото другое
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.09.2009, 10:57

Как прибавить к дате 7 дней
Всем привет. как прибавить к дате &quot;очередного ТО и ПР&quot; еще 7 дней, если она формируется как ...

Как прибавить 20 дней к дате
В новой ячейке должно прибавляться 20 дней к той дате которая находится в другой ячейки, подскажите...

Как прибавить кол-во дней к дате
Как использовать функцию Date_add не могу разобраться Вот что у меня &lt;?php $Today = date('d...

Как автоматически прибавить к дате 30 дней?
Добрый день, есть в базе поле №1 в формате даты дд.мм.гггг. Необходимо в поле №2 автоматически...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.