Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- class WorkdaysBetweenTodayAndGivenDay
- {
- static int lengthDays;
- static void Main()
- {
- DateTime now = DateTime.Today;
- Console.Write("Enter a date YYYY-MM-DD for end : ");
- DateTime endDate = DateTime.Parse(Console.ReadLine());
- List<DateTime> holidays = new List<DateTime>() {new DateTime(2013, 1, 1),
- new DateTime(2013, 3, 3),
- new DateTime(2013, 5, 1),
- new DateTime(2013, 5, 6),
- new DateTime(2013, 5, 24),
- new DateTime(2013, 9, 22),
- new DateTime(2013, 12, 24),
- new DateTime(2013, 12, 25),
- new DateTime(2013, 12, 26),
- new DateTime(2013, 12, 31)};
- CountWorkdays(now, endDate , holidays);
- PrintResult(now, endDate, lengthDays);
- }
- static void CountWorkdays(DateTime start,DateTime end, List<DateTime> holidays)
- {
- //превърнал съм го в поле на класа за да е видимо от всички методи
- //- виж началото на класа
- lengthDays = (end - start).Days;
- int length = lengthDays;
- DateTime currentDate = new DateTime();
- for (int i = 0; i <= length; i++)
- {
- currentDate = start.AddDays(i);
- // Вместо този цикъл можеш да използваш метода Contains
- //for (int days = 0; days < holidays.Length; days++)
- //{
- // int comparison = currentDate.CompareTo(holidays[days]);
- // if (comparison == 0)
- // {
- // lengthDays-- ;
- // }
- //}
- if (holidays.Contains(currentDate))
- {
- lengthDays--;
- }
- //Пренесъл съм го на два реда защото моят екран е тесен и не искам да scroll - вам
- //настрани
- if (currentDate.DayOfWeek == DayOfWeek.Saturday ||
- currentDate.DayOfWeek == DayOfWeek.Sunday)
- {
- lengthDays--;
- }
- }
- //Много хубаво отделяш принтирането в отделен метод, но можеш да изкараш този
- //метод в Main. Защо:
- //Един метод би трябвало да прави едно нещо. В твоя случай името е
- //добро и подсказва, че методът брой работните дни. Това, което методът прави е да
- //брой работните дни и да ги принтира. Или ще трябва да промениш името му на
- //CountAndPrintWorkdays, или ще трябва да извадиш принтирането в Main метода.
- //PrintResult(start,end,lengthDays);
- }
- private static void PrintResult(DateTime start, DateTime end, int lengthDays)
- {
- Console.WriteLine("Today is: {0:D}", start);
- Console.WriteLine("Final Date is: {0:D}", end);
- Console.WriteLine();
- Console.WriteLine("Working days: {0}", lengthDays);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement