Advertisement
Guest User

Workdays

a guest
Jan 11th, 2014
69
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.50 KB | None | 0 0
  1. using System;
  2.  
  3. namespace _05Workdays
  4. {
  5. class Workdays
  6. {
  7. static void Main()
  8. {
  9. Console.Write("Input a date yyyy.mm.dd: ");
  10. string dateAsString = Console.ReadLine();
  11. DateTime date = DateTime.Parse(dateAsString);
  12. int numberWorkdays = GetWorkdaysFromToday(date);
  13. Console.WriteLine(numberWorkdays);
  14. }
  15.  
  16. static int GetWorkdaysFromToday(DateTime date)
  17. {
  18. DateTime today = DateTime.Today;
  19. int days = 0;
  20. if (DateTime.Compare(today,date) < 0)
  21. {
  22. // today before date
  23. do
  24. {
  25. if (IsBuisnessDay(today) && !IsHoliday(today))
  26. {
  27. days++;
  28. }
  29. today = today.AddDays(1);
  30. } while (DateTime.Compare(today, date) <= 0);
  31. }
  32. else if (DateTime.Compare(today,date) > 0)
  33. {
  34. // today after date
  35. do
  36. {
  37. if (IsBuisnessDay(date) && !IsHoliday(date))
  38. {
  39. days++;
  40. }
  41. date = date.AddDays(1);
  42. } while (DateTime.Compare(date, today) <= 0);
  43. }
  44. else
  45. {
  46. days = 0;
  47. }
  48. return days;
  49. }
  50.  
  51. static bool IsHoliday(DateTime date)
  52. {
  53. int year = date.Year;
  54. DateTime[] holidays =
  55. {
  56. new DateTime(year, 1, 1),
  57. new DateTime(year, 3, 3),
  58. new DateTime(year, 5, 1),
  59. new DateTime(year, 5, 2),
  60. new DateTime(year, 5, 6),
  61. new DateTime(year, 5, 24),
  62. new DateTime(year, 9, 22),
  63. new DateTime(year, 12, 24),
  64. new DateTime(year, 12, 25),
  65. new DateTime(year, 12, 26),
  66. new DateTime(year, 12, 31)
  67. };
  68. for (int i = 0; i < holidays.Length; i++)
  69. {
  70. if (DateTime.Equals(date, holidays[i]))
  71. {
  72. return true;
  73. }
  74. }
  75. return false;
  76. }
  77.  
  78. static bool IsBuisnessDay(DateTime date)
  79. {
  80. return date.DayOfWeek != DayOfWeek.Saturday && date.DayOfWeek != DayOfWeek.Sunday;
  81. }
  82. }
  83. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement