3 / 3 / 4
Регистрация: 27.05.2012
Сообщений: 37
1

Как откинуть праздничные дни при планировании мероприятий?

11.01.2013, 23:21. Показов 6310. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте.
В программе необходимо при вводе начальной даты рассчитать даты планируемых мероприятий, при этом отбрасывать выходные и праздничные дни. С выходными разобрался, а с праздниками что-то не получается.
C#
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
27
28
29
30
31
32
33
34
35
36
37
private void button1_Click(object sender, EventArgs e)
        {
            intday = Convert.ToInt32(daytextBox.Text);
            intmonth = Convert.ToInt32(monthcomboBox.Text);
            intyear = Convert.ToInt32(yearcomboBox.Text);
            mydate = new DateTime(intyear, intmonth, intday);
            
            for (int j=1; j<=5; j++) // 5 событий
            {
                int i=0;
                while (i<r[j-1]) //r[] - количество дней между событиями взятое из массива
                {
                    mydate = mydate.AddDays(1);
                    if (mydate.DayOfWeek != DayOfWeek.Saturday || mydate.DayOfWeek != DayOfWeek.Sunday || mydate.Date != ) i++; // если день не выходной, он прибавляется к дате
                }
                switch (j)
                {
                    case 1:
                        textBox1.Text = mydate.ToShortDateString();
                        break;
                    case 2:
                        textBox2.Text = mydate.ToShortDateString();
                        break;
                    case 3:
                        textBox3.Text = mydate.ToShortDateString();
                        break;
                    case 4:
                        textBox4.Text = mydate.ToShortDateString();
                        break;
                    case 5:
                        textBox5.Text = mydate.ToShortDateString();
                        break;
                }
                
            }
 
        }
Если кто сталкивался, подскажите.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.01.2013, 23:21
Ответы с готовыми решениями:

Как вычитать даты не учитывая праздничные и выходные дни
несколько рабочих работают над одним изделием. Пока первый не завершит работу второй не может...

Как сделать в календаре праздничные дни, чтобы информация отображалась о них в ListBox?
Как сделать в календаре праздничные дни чтобы информация отображалась о них в ListBox

Выходные и праздничные дни
Всем привет! Доделываю тут табель рабочего времени возник вопрос-как в самом запросе выбрать...

Программа, выводящая праздничные дни
Помогите написать код Delphi. Используя оператор выбора, написать программу, которая по введенному...

4
338 / 327 / 154
Регистрация: 29.10.2012
Сообщений: 949
12.01.2013, 00:02 2
Создайте функцию/метод в которой будут (например: HolidayDay(mydate.Date)):
1) перечислые все даты праздников
2) проводит проверку на соответствие проверяемой даты празднику
3) возвращающе true и false
Вставьте эту функцию/метод в условие в строке 14
C#
1
if (!HolidayDay(mydate.Date) || mydate.DayOfWeek != DayOfWeek.Saturday || mydate.DayOfWeek != DayOfWeek.Sunday) i++; // если день не выходной, он прибавляется к дате
1
3 / 3 / 4
Регистрация: 27.05.2012
Сообщений: 37
12.01.2013, 19:31  [ТС] 3
Дописал метод Holiday(DateTame mydata). Проверил работает правильно. Вставил в 14 строку - ни какого результата. В чем ошибка?
Вот код:
C#
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
private void button1_Click(object sender, EventArgs e)
        {
            intday = Convert.ToInt32(daytextBox.Text);
            intmonth = Convert.ToInt32(monthcomboBox.Text);
            intyear = Convert.ToInt32(yearcomboBox.Text);
            mydate = new DateTime(intyear, intmonth, intday);
            
            for (int j=1; j<=5; j++) // 5 событий
            {
                int i=0;
                while (i<r[j-1]) //r[] - количество дней между событиями взятое из массива
                {
                    mydate = mydate.AddDays(1);
                    if (Holiday(mydate)!=true || mydate.DayOfWeek != DayOfWeek.Saturday || mydate.DayOfWeek != DayOfWeek.Sunday) i++; // если день не выходной, он прибавляется к дате
                }
                switch (j)
                {
                    case 1:
                        textBox1.Text = mydate.ToShortDateString();
                        break;
                    case 2:
                        textBox2.Text = mydate.ToShortDateString();
                        break;
                    case 3:
                        textBox3.Text = mydate.ToShortDateString();
                        break;
                    case 4:
                        textBox4.Text = mydate.ToShortDateString();
                        break;
                    case 5:
                        textBox5.Text = mydate.ToShortDateString();
                        break;
                }
                
            }
 
        }
 
        bool Holiday(DateTime mydate)
        {
            string[] hds = { "01.01", "02.01", "03.01", "04.01", "05.01", "06.01", "07.01", "23.02", "08.03", "01.05", "02.05", "09.05", "12.06", "04.11" };
 
            foreach (var hd in hds)
            {
               if (mydate.Date.ToString("dd.MM", CultureInfo.InvariantCulture) == hd) return (true);
            }
            return (false);
        }
0
338 / 327 / 154
Регистрация: 29.10.2012
Сообщений: 949
12.01.2013, 19:58 4
Да, метод работает правильно. Скажите пожалуйста, что работает не верно, результат то все равно какой нибудь должен быть.
Возможно надо поменять логику с или (||) на и (&&).
Сейчас условие выглядит следующим образом:
Если сейчас не празник или не выходной, то добавить день.
Насколько я понимаю надо следующую логику:
Если сейчас не праздник и не выходной, то добавить день.
0
3 / 3 / 4
Регистрация: 27.05.2012
Сообщений: 37
12.01.2013, 20:08  [ТС] 5
Огромное спасибо! Переписал строку
C#
1
if (Holiday(mydate)!=true && (mydate.DayOfWeek != DayOfWeek.Saturday || mydate.DayOfWeek != DayOfWeek.Sunday)) i++;
и все получилось.
0
12.01.2013, 20:08
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.01.2013, 20:08
Помогаю со студенческими работами здесь

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

все приходящиеся на этот месяц праздничные дни
Написать программу, которая по введенному числу от 1 до 12 (номеру месяца) выдает все приходящиеся...

По заданному номеру месяца определить праздничные дни
Написать программу, которая по данному натуральному числу от 1 до 12 ( номеру месяца ) выдает все...

Работа с Календарем - задать праздничные (выходные) дни
Собственно, возникла такая задача. Постараюсь максимально описать суть. Имеются Посты. У...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru