Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - .NET

Страница: 1 |

 

  Вопрос: Как к Дате прибавить только рабочие дни ? Добавлено: 09.05.07 18:09  

Автор вопроса:  student-uni
Ну хотя бы выкинуть только субботы и выходные

Понятно национальные праздники во всех странах по разному,
но может есть в дот нет средство посчитать только Понедельники - по Пятницы ?

Спасибо

Ответить

  Ответы Всего ответов: 3  

Номер ответа: 1
Автор ответа:
 Павел



Администратор

ICQ: 326066673 

Вопросов: 368
Ответов: 5968
 Web-сайт: www.vbnet.ru
 Профиль | | #1
Добавлено: 09.05.07 21:26
Самое банальное решение - что-то типа:

Dim SourceDate as Date = New Date(2007, 05, 09)
Dim DaysToAdd As Int32 = 10
Dim ResultDate As Date = SourceDate
Dim AddedDays As Int32 = 0

Do While AddedDays < DaysToAdd
  ResultDate = ResultDate.AddDays(1)
  If {условие, проверяющее, является ли ResultDate рабочим днем} Then
     AddedDays += 1
  End If
Loop

Console.WriteLine(ResultDate.ToString("dd.MM.yyyy";))


Но сгодится тоько при прибавлении небольших интервалах (если 200 лет
прибавлять надо, то лучше придумать что-то попроизводительней, а для
1-100 дней вполне сгодится).

Ответить

Номер ответа: 2
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #2
Добавлено: 10.05.07 06:05
Павел, помнишь код для проверки булевской переменной на истинность? :)
Если у тебя есть количество дней и день недели первого дня, то достаточно сдвинуть номера дней, потом разделить нацело на 7, умножить на 2 и прибавить сколько выходных приходится на последнюю неделю. Например, так:
15 дней, ВТ
ВТ СР ЧТ ПТ СБ ВС ПН ВТ СР ЧТ ПТ СБ ВС ПН ВТ
-4 -3 -2 -1 0 1 2 3 4 5 6 7 8 9 10
(10 \ 7)*2 + min(10 % 7, 2) = 2 + 2 = 4

Ответить

Номер ответа: 3
Автор ответа:
 Павел



Администратор

ICQ: 326066673 

Вопросов: 368
Ответов: 5968
 Web-сайт: www.vbnet.ru
 Профиль | | #3
Добавлено: 10.05.07 12:59
Праздники не учитываешь.

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам