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