Страница: 1 |
Страница: 1 |
Вопрос: Как к Дате прибавить только рабочие дни ?
Добавлено: 09.05.07 18:09
Автор вопроса: student-uni
Ну хотя бы выкинуть только субботы и выходные
Понятно национальные праздники во всех странах по разному,
но может есть в дот нет средство посчитать только Понедельники - по Пятницы ?
Спасибо
Ответы
Всего ответов: 3
Номер ответа: 1
Автор ответа:
Павел
Администратор
ICQ: 326066673
Вопросов: 368
Ответов: 5968
Web-сайт:
Профиль | | #1
Добавлено: 09.05.07 21:26
Самое банальное решение - что-то типа:
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-сайт:
Профиль | | #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-сайт:
Профиль | | #3
Добавлено: 10.05.07 12:59
Праздники не учитываешь.