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 | } |