View difference between Paste ID: 6TfiJwHw and rEj1vmkm
SHOW: | | - or go back to the newest paste.
1
using System;
2
using System.Collections.Generic;
3
4
class WorkdaysBetweenTodayAndGivenDay
5
{
6
7
    static int lengthDays;
8
    static void Main()
9
    {
10
        DateTime now = DateTime.Today; 
11
        Console.Write("Enter a date YYYY-MM-DD for end : ");
12
        DateTime endDate = DateTime.Parse(Console.ReadLine());
13
        List<DateTime> holidays = new List<DateTime>() {new DateTime(2013, 1, 1),
14
                               new DateTime(2013, 3, 3),
15
                               new DateTime(2013, 5, 1),
16
                               new DateTime(2013, 5, 6),
17
                               new DateTime(2013, 5, 24),
18
                               new DateTime(2013, 9, 22),
19
                               new DateTime(2013, 12, 24),
20
                               new DateTime(2013, 12, 25),
21
                               new DateTime(2013, 12, 26),
22
                               new DateTime(2013, 12, 31)};
23
24
        CountWorkdays(now, endDate , holidays);
25-
        //
25+
        
26
        PrintResult(now, endDate, lengthDays);
27
    }
28
    static void CountWorkdays(DateTime start,DateTime end, List<DateTime> holidays)
29
    {
30
        //превърнал съм го в поле на класа за да е видимо от всички методи
31
        //- виж началото на класа
32
        lengthDays = (end - start).Days;
33
        int length = lengthDays;
34
        DateTime currentDate = new DateTime();
35
36
        for (int i = 0; i <= length; i++)
37
        {
38
            currentDate = start.AddDays(i);
39
            // Вместо този цикъл можеш да използваш метода Contains
40
            //for (int days = 0; days < holidays.Length; days++)
41
            //{
42
            //    int comparison = currentDate.CompareTo(holidays[days]);
43
            //    if (comparison == 0)
44
            //    {
45
            //        lengthDays-- ;
46
            //    }
47
            //}
48
            if (holidays.Contains(currentDate))
49
            {
50
                lengthDays--;
51
            }
52
53
            //Пренесъл съм го на два реда защото моят екран е тесен и не искам да scroll - вам 
54
            //настрани
55
            if (currentDate.DayOfWeek == DayOfWeek.Saturday ||
56
                currentDate.DayOfWeek == DayOfWeek.Sunday)
57
            {
58
                lengthDays--;
59
            }
60
        }
61
 
62
        //Много хубаво отделяш принтирането в отделен метод, но можеш да изкараш този 
63
        //метод в Main. Защо:
64
65
        //Един метод би трябвало да прави едно нещо. В твоя случай името е
66
        //добро и подсказва, че методът брой работните дни. Това, което методът прави е да 
67
        //брой работните дни и да ги принтира. Или ще трябва да промениш името му на
68
        //CountAndPrintWorkdays, или ще трябва да извадиш принтирането в Main метода.  
69-
        PrintResult(start,end,lengthDays);
69+
        //PrintResult(start,end,lengthDays);
70
           
71
    }
72
 
73
    private static void PrintResult(DateTime start, DateTime end, int lengthDays)
74
    {
75
        Console.WriteLine("Today is: {0:D}", start);
76
        Console.WriteLine("Final Date is: {0:D}", end);
77
        Console.WriteLine();
78
        Console.WriteLine("Working days: {0}", lengthDays);
79
    }
80
}