Класс для представления даты и времени - C#

Узнай цену своей работы

Формулировка задачи:

Здравствуйте, знаю что уже было много тем создано с подобным вопросом. Но начал искать я уже после того, как проделал какую то работу и заново переписывать нет желания. Хотелось бы найти у себя ошибку или может как то пофиксить мой говнокод:
Листинг программы
  1. class DateTime
  2. {
  3. public DateTime(int year, int month, int day, int hour, int minute, int second)
  4. {
  5. if (second > 60 || second < 0)
  6. {
  7. throw new ArgumentException("Seconds must be between 0-60");
  8. }
  9. if (minute > 60 || minute < 0)
  10. {
  11. throw new ArgumentException("Minutes must be between 0-60");
  12. }
  13. if (hour > 23 || hour < 0)
  14. {
  15. throw new ArgumentException("Hours must be between 0-24");
  16. }
  17. if (day > 31 || day < 1)
  18. {
  19. throw new ArgumentException("Days must be at least between 1-31");
  20. }
  21. //if (day == 31 && ) //тут потом месяцы вписать
  22. //{
  23. // throw new ArgumentException("Days must be at least between 1-31");
  24. //}
  25. if (month > 12 || month < 1)
  26. {
  27. throw new ArgumentException("Month must be between 1-12");
  28. }
  29. if (year < 0)
  30. {
  31. throw new ArgumentException("Years must be positve");
  32. }
  33. Second = second;
  34. Minute = minute;
  35. Hour = hour;
  36. Day = day;
  37. Month = month;
  38. Year = year;
  39. }
  40. public const int SecondsInYear = 31556926;
  41. public const int SecondsInMonth = 2629743;
  42. public const int SecondsInDay = 86400;
  43. public const int SecondsInHour = 3600;
  44. public const int SecondsInMinute = 60;
  45. public const int MinutesInYear = 525948;
  46. public const int MinutesInMonth = 43829;
  47. public const int MinutesInDay = 1440;
  48. public const int MinutesInHour = 60;
  49. public const int HoursInYear = 8765;
  50. public const int HoursInMonth = 730;
  51. public const int HoursInDay = 24;
  52. public const int MonthInYear = 12;
  53. public const int DayInYear = 365;
  54. public const int DayInMonth = 31;
  55.  
  56. public int Year { get; private set; }
  57. public int Month { get; private set; }
  58. public int Day { get; private set; }
  59. public int Hour { get; private set; }
  60. public int Minute { get; private set; }
  61. public int Second { get; private set; }
  62. public void ChangeDateTime(int year, int month, int day, int hour, int minute, int second)
  63. {
  64. if (second > 60 || second < 0)
  65. {
  66. throw new ArgumentException("Seconds must be between 0-60");
  67. }
  68. if (minute > 60 || minute < 0)
  69. {
  70. throw new ArgumentException("Minutes must be between 0-60");
  71. }
  72. if (hour > 23 || hour < 0)
  73. {
  74. throw new ArgumentException("Hours must be between 0-24");
  75. }
  76. if (day > 31 || day < 1)
  77. {
  78. throw new ArgumentException("Days must be at least between 1-31");
  79. }
  80. //if (day == 31 && ) //тут потом месяцы вписать
  81. //{
  82. // throw new ArgumentException("Days must be at least between 1-31");
  83. //}
  84. if (month > 12 || month < 1)
  85. {
  86. throw new ArgumentException("Month must be between 1-12");
  87. }
  88. if (year < 0)
  89. {
  90. throw new ArgumentException("Years must be positve");
  91. }
  92. Second = second;
  93. Minute = minute;
  94. Hour = hour;
  95. Day = day;
  96. Month = month;
  97. Year = year;
  98. }
  99. public void AddSecond(int second)
  100. {
  101. int plusYear = second / SecondsInYear;
  102. second = second - plusYear * SecondsInYear;
  103. int plusMonth = second / SecondsInMonth;
  104. second = second - plusMonth * SecondsInMonth;
  105. int plusDay = second / SecondsInDay;
  106. second = second - plusDay * SecondsInDay;
  107. int plusHour = second / SecondsInHour;
  108. second = second - plusHour * SecondsInHour;
  109. int plusMinute = second / SecondsInMinute;
  110. second = second - plusMinute * SecondsInMinute;
  111. if (second + Second > 59)
  112. {
  113. plusMinute++;
  114. second = second - (60 - Second);
  115. }
  116. else
  117. {
  118. second = Second + second;
  119. }
  120. Year += plusYear;
  121. Month += plusMonth;
  122. Day += plusDay;
  123. Hour += plusHour;
  124. Minute += plusMinute;
  125. Second = second;
  126. }
  127. public void AddMinute(int minute)
  128. {
  129. int plusYear = minute / MinutesInYear;
  130. minute = minute - plusYear * MinutesInYear;
  131. int plusMonth = minute / MinutesInMonth;
  132. minute = minute - plusMonth * MinutesInMonth;
  133. int plusDay = minute / MinutesInDay;
  134. minute = minute - plusDay * MinutesInDay;
  135. int plusHour = minute / MinutesInHour;
  136. minute = minute - plusHour * MinutesInHour;
  137. if (minute + Minute > 59)
  138. {
  139. plusHour++;
  140. minute = minute - (60 - Minute);
  141. }
  142. else
  143. {
  144. minute = Minute + minute;
  145. }
  146. Year += plusYear;
  147. Month += plusMonth;
  148. Day += plusDay;
  149. Hour += plusHour;
  150. Minute = minute;
  151. }
  152. public void AddHour(int hour)
  153. {
  154. int plusYear = hour / HoursInYear;
  155. hour = hour - plusYear * HoursInYear;
  156. int plusMonth = hour / HoursInMonth;
  157. hour = hour - plusMonth * HoursInMonth;
  158. int plusDay = hour / HoursInDay;
  159. hour = hour - plusDay * HoursInDay;
  160. if (hour + Hour > 23)
  161. {
  162. plusDay++;
  163. hour = hour - (23 - Hour);
  164. }
  165. else
  166. {
  167. hour = Hour + hour;
  168. }
  169. Year += plusYear;
  170. Month += plusMonth;
  171. Day += plusDay;
  172. Hour = hour;
  173. }
  174. public void AddDay(int day)
  175. {
  176. int plusYear = day / DayInYear;
  177. day = day - plusYear * DayInYear;
  178. int plusMonth = day / DayInMonth;
  179. day = day - plusMonth * DayInMonth;
  180. switch (Month)
  181. {
  182. case 1:
  183. case 3:
  184. case 5:
  185. case 7:
  186. case 8:
  187. case 10:
  188. case 12:
  189. if (day + Day > 31)
  190. {
  191. plusMonth++;
  192. day = day - (31 - Day);
  193. }
  194. else
  195. {
  196. day = Day + day;
  197. }
  198. Year += plusYear;
  199. Month += plusMonth;
  200. Day = day;
  201.  
  202. break;
  203. case 4:
  204. case 6:
  205. case 9:
  206. case 11:
  207. if (day + Day > 30)
  208. {
  209. plusMonth++;
  210. day = day - (30 - Day);
  211. }
  212. else
  213. {
  214. day = Day + day;
  215. }
  216. Year += plusYear;
  217. Month += plusMonth;
  218. Day = day;
  219. break;
  220. case 2:
  221. if (VisYear(Year))
  222. {
  223. if (day + Day > 29)
  224. {
  225. plusMonth++;
  226. day = day - (29 - Day);
  227. }
  228. else
  229. {
  230. day = Day + day;
  231. }
  232. Year += plusYear;
  233. Month += plusMonth;
  234. Day = day;
  235. }
  236. else
  237. {
  238. if (day + Day > 28)
  239. {
  240. plusMonth++;
  241. day = day - (28 - Day);
  242. }
  243. else
  244. {
  245. day = Day + day;
  246. }
  247. Year += plusYear;
  248. Month += plusMonth;
  249. Day = day;
  250. }
  251. break;
  252. }
  253. }
  254. public bool VisYear(int year)
  255. {
  256. bool flag = false;
  257. if (year % 4 == 0)
  258. flag = true;
  259. else
  260. return flag;
  261. if (year % 100 == 0)
  262. if (year % 400 != 0)
  263. flag = false;
  264. return flag;
  265. }
  266. public void AddMonth(int month)
  267. {
  268. int plusYear = month / MonthInYear;
  269. month = month - plusYear * MonthInYear;
  270. if (month + Month > 12)
  271. {
  272. plusYear++;
  273. month = month - (12 - Month);
  274. }
  275. else
  276. {
  277. month = Month + month;
  278. }
  279. Year += plusYear;
  280. Month = month;
  281.  
  282. }
  283. public void AddYear(int year)
  284. {
  285. if (year < 0)
  286. {
  287. throw new ArgumentException("Years must be positve");
  288. }
  289. else
  290. {
  291. year = Year + year;
  292. }
  293. Year = year;
  294. }
  295. public void Write()
  296. {
  297. if (Day < 10 && Month < 10)
  298. {
  299. if (Hour < 10 && Minute < 10 && Second < 10)
  300. {
  301. Console.WriteLine("0{0}.0{1}.{2} 0{3}:0{4}:0{5}", Day, Month, Year, Hour, Minute, Second);
  302. }
  303. else if (Hour < 10 && Minute < 10)
  304. {
  305. Console.WriteLine("0{0}.0{1}.{2} 0{3}:0{4}:{5}", Day, Month, Year, Hour, Minute, Second);
  306. }
  307. else if (Hour < 10 && Second < 10)
  308. {
  309. Console.WriteLine("0{0}.0{1}.{2} 0{3}:{4}:0{5}", Day, Month, Year, Hour, Minute, Second);
  310. }
  311. else if (Second < 10 && Minute < 10)
  312. {
  313. Console.WriteLine("0{0}.0{1}.{2} {3}:0{4}:0{5}", Day, Month, Year, Hour, Minute, Second);
  314. }
  315. else if (Hour < 10)
  316. {
  317. Console.WriteLine("0{0}.0{1}.{2} 0{3}:{4}:{5}", Day, Month, Year, Hour, Minute, Second);
  318. }
  319. else if (Second < 10)
  320. {
  321. Console.WriteLine("0{0}.0{1}.{2} {3}:{4}:0{5}", Day, Month, Year, Hour, Minute, Second);
  322. }
  323. else if (Minute < 10)
  324. {
  325. Console.WriteLine("0{0}.0{1}.{2} {3}:0{4}:{5}", Day, Month, Year, Hour, Minute, Second);
  326. }
  327. else
  328. {
  329. Console.WriteLine("0{0}.0{1}.{2} {3}:{4}:{5}", Day, Month, Year, Hour, Minute, Second);
  330. }
  331. }
  332. else if (Day < 10)
  333. {
  334. if (Hour < 10 && Minute < 10 && Second < 10)
  335. {
  336. Console.WriteLine("0{0}.{1}.{2} 0{3}:0{4}:0{5}", Day, Month, Year, Hour, Minute, Second);
  337. }
  338. else if (Hour < 10 && Minute < 10)
  339. {
  340. Console.WriteLine("0{0}.{1}.{2} 0{3}:0{4}:{5}", Day, Month, Year, Hour, Minute, Second);
  341. }
  342. else if (Hour < 10 && Second < 10)
  343. {
  344. Console.WriteLine("0{0}.{1}.{2} 0{3}:{4}:0{5}", Day, Month, Year, Hour, Minute, Second);
  345. }
  346. else if (Second < 10 && Minute < 10)
  347. {
  348. Console.WriteLine("0{0}.{1}.{2} {3}:0{4}:0{5}", Day, Month, Year, Hour, Minute, Second);
  349. }
  350. else if (Hour < 10)
  351. {
  352. Console.WriteLine("0{0}.{1}.{2} 0{3}:{4}:{5}", Day, Month, Year, Hour, Minute, Second);
  353. }
  354. else if (Second < 10)
  355. {
  356. Console.WriteLine("0{0}.{1}.{2} {3}:{4}:0{5}", Day, Month, Year, Hour, Minute, Second);
  357. }
  358. else if (Minute < 10)
  359. {
  360. Console.WriteLine("0{0}.{1}.{2} {3}:0{4}:{5}", Day, Month, Year, Hour, Minute, Second);
  361. }
  362. else
  363. {
  364. Console.WriteLine("0{0}.{1}.{2} {3}:{4}:{5}", Day, Month, Year, Hour, Minute, Second);
  365. }
  366. }
  367. else if (Month < 10)
  368. {
  369. if (Hour < 10 && Minute < 10 && Second < 10)
  370. {
  371. Console.WriteLine("{0}.0{1}.{2} 0{3}:0{4}:0{5}", Day, Month, Year, Hour, Minute, Second);
  372. }
  373. else if (Hour < 10 && Minute < 10)
  374. {
  375. Console.WriteLine("{0}.0{1}.{2} 0{3}:0{4}:{5}", Day, Month, Year, Hour, Minute, Second);
  376. }
  377. else if (Hour < 10 && Second < 10)
  378. {
  379. Console.WriteLine("{0}.0{1}.{2} 0{3}:{4}:0{5}", Day, Month, Year, Hour, Minute, Second);
  380. }
  381. else if (Second < 10 && Minute < 10)
  382. {
  383. Console.WriteLine("{0}.0{1}.{2} {3}:0{4}:0{5}", Day, Month, Year, Hour, Minute, Second);
  384. }
  385. else if (Hour < 10)
  386. {
  387. Console.WriteLine("{0}.0{1}.{2} 0{3}:{4}:{5}", Day, Month, Year, Hour, Minute, Second);
  388. }
  389. else if (Second < 10)
  390. {
  391. Console.WriteLine("{0}.0{1}.{2} {3}:{4}:0{5}", Day, Month, Year, Hour, Minute, Second);
  392. }
  393. else if (Minute < 10)
  394. {
  395. Console.WriteLine("{0}.0{1}.{2} {3}:0{4}:{5}", Day, Month, Year, Hour, Minute, Second);
  396. }
  397. else
  398. {
  399. Console.WriteLine("{0}.0{1}.{2} {3}:{4}:{5}", Day, Month, Year, Hour, Minute, Second);
  400. }
  401. }
  402. else
  403. {
  404. if (Hour < 10 && Minute < 10 && Second < 10)
  405. {
  406. Console.WriteLine("{0}.{1}.{2} 0{3}:0{4}:0{5}", Day, Month, Year, Hour, Minute, Second);
  407. }
  408. else if (Hour < 10 && Minute < 10)
  409. {
  410. Console.WriteLine("{0}.{1}.{2} 0{3}:0{4}:{5}", Day, Month, Year, Hour, Minute, Second);
  411. }
  412. else if (Hour < 10 && Second < 10)
  413. {
  414. Console.WriteLine("{0}.{1}.{2} 0{3}:{4}:0{5}", Day, Month, Year, Hour, Minute, Second);
  415. }
  416. else if (Second < 10 && Minute < 10)
  417. {
  418. Console.WriteLine("{0}.{1}.{2} {3}:0{4}:0{5}", Day, Month, Year, Hour, Minute, Second);
  419. }
  420. else if (Hour < 10)
  421. {
  422. Console.WriteLine("{0}.{1}.{2} 0{3}:{4}:{5}", Day, Month, Year, Hour, Minute, Second);
  423. }
  424. else if (Second < 10)
  425. {
  426. Console.WriteLine("{0}.{1}.{2} {3}:{4}:0{5}", Day, Month, Year, Hour, Minute, Second);
  427. }
  428. else if (Minute < 10)
  429. {
  430. Console.WriteLine("{0}.{1}.{2} {3}:0{4}:{5}", Day, Month, Year, Hour, Minute, Second);
  431. }
  432. else
  433. {
  434. Console.WriteLine("{0}.{1}.{2} {3}:{4}:{5}", Day, Month, Year, Hour, Minute, Second);
  435. }
  436. }
  437. }
  438.  
  439. }
  440. }
В принципе все работает нормально, кроме одного, он не учитывает то, что всего 12 месяцев, и когда прибавляю дни, часы, и т.д. уходит за 13 месяцев и т.д. Не знаю как решить эту проблему, подскажите если не сложно.

Решение задачи: «Класс для представления даты и времени»

textual
Листинг программы
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5.  
  6. namespace lab1_3sem
  7. {
  8.     class DateTime
  9.     {
  10.         // метод для проверки на ошибку ввода
  11.         public DateTime(int year, int month, int day, int hour, int minute, int second)
  12.         {
  13.             if (second > 60 || second < 0)
  14.             {
  15.                 throw new ArgumentException("Seconds must be between 0-60");
  16.             }
  17.             if (minute > 60 || minute < 0)
  18.             {
  19.                 throw new ArgumentException("Minutes must be between 0-60");
  20.             }
  21.             if (hour > 23 || hour < 0)
  22.             {
  23.                 throw new ArgumentException("Hours must be between 0-24");
  24.             }
  25.             if (day > 31 || day < 1)
  26.             {
  27.                 throw new ArgumentException("Days must be at least between 1-31");
  28.             }
  29.             if (month > 12 || month < 1)
  30.             {
  31.                 throw new ArgumentException("Month must be between 1-12");
  32.             }
  33.             if (year < 0)
  34.             {
  35.                 throw new ArgumentException("Years must be positve");
  36.             }
  37.             Second = second;
  38.             Minute = minute;
  39.             Hour = hour;
  40.             Day = day;
  41.             Month = month;
  42.             Year = year;
  43.         }
  44.         // константы для вычисления
  45.         public const int SecondsInYear = 31556926;
  46.         public const int SecondsInMonth = 2629743;
  47.         public const int SecondsInDay = 86400;
  48.         public const int SecondsInHour = 3600;
  49.         public const int SecondsInMinute = 60;
  50.  
  51.         public const int MinutesInYear = 525948;
  52.         public const int MinutesInMonth = 43829;
  53.         public const int MinutesInDay = 1440;
  54.         public const int MinutesInHour = 60;
  55.  
  56.         public const int HoursInYear = 8765;
  57.         public const int HoursInMonth = 730;
  58.         public const int HoursInDay = 24;
  59.  
  60.         public const int MonthInYear = 12;
  61.  
  62.         public const int DayInYear = 365;
  63.  
  64.         public const int DayInMonth = 31;
  65.  
  66.  
  67.        
  68.         public int Year { get; private set; }
  69.         public int Month { get; private set; }
  70.         public int Day { get; private set; }
  71.         public int Hour { get; private set; }
  72.         public int Minute { get; private set; }
  73.         public int Second { get; private set; }
  74.  
  75.         // метод для изменения даты
  76.         public void ChangeDateTime(int year, int month, int day, int hour, int minute, int second)
  77.         {
  78.             if (second > 60 || second < 0)
  79.             {
  80.                 throw new ArgumentException("Seconds must be between 0-60");
  81.             }
  82.             if (minute > 60 || minute < 0)
  83.             {
  84.                 throw new ArgumentException("Minutes must be between 0-60");
  85.             }
  86.             if (hour > 24 || hour < 0)
  87.             {
  88.                 throw new ArgumentException("Hours must be between 0-24");
  89.             }
  90.             if (day > 31 || day < 1)
  91.             {
  92.                 throw new ArgumentException("Days must be at least between 1-31");
  93.             }
  94.             if (month > 12 || month < 1)
  95.             {
  96.                 throw new ArgumentException("Month must be between 1-12");
  97.             }
  98.             if (year < 0)
  99.             {
  100.                 throw new ArgumentException("Years must be positve");
  101.             }
  102.             Second = second;
  103.             Minute = minute;
  104.             Hour = hour;
  105.             Day = day;
  106.             Month = month;
  107.             Year = year;
  108.         }
  109.         // метод для добавления секунд
  110.         public void AddSecond(int second)
  111.         {
  112.             int plusYear = second / SecondsInYear;
  113.             second = second - plusYear * SecondsInYear;
  114.             int plusMonth = second / SecondsInMonth;
  115.             second = second - plusMonth * SecondsInMonth;
  116.             int plusDay = second / SecondsInDay;
  117.             second = second - plusDay * SecondsInDay;
  118.             int plusHour = second / SecondsInHour;
  119.             second = second - plusHour * SecondsInHour;
  120.             int plusMinute = second / SecondsInMinute;
  121.             second = second - plusMinute * SecondsInMinute;
  122.             if (second + Second > 59)
  123.             {
  124.                 plusMinute++;
  125.                 second = second - (60 - Second);
  126.             }
  127.             else
  128.             {
  129.                 second = Second + second;
  130.             }
  131.            
  132.             if (Hour + plusHour > 23)
  133.             {
  134.                 plusHour++;
  135.                 Hour = Hour - (23 - plusHour);
  136.             }
  137.             else
  138.             {
  139.                 Hour += plusHour;
  140.             }
  141.             if (Minute + plusMinute > 60)
  142.             {
  143.                 plusHour++;
  144.                 Minute = Minute - (12 - plusMinute);
  145.             }
  146.             else
  147.             {
  148.                 Minute += plusMinute;
  149.             }
  150.            
  151.             if (Month == 1 || Month == 3 || Month == 5 || Month == 7 || Month == 8 || Month == 10 || Month == 12)
  152.             {
  153.                 Day = 31;
  154.                 if (Day + plusDay > 31)
  155.                 {
  156.                     plusMonth++;
  157.                     Day = Day - (31 - plusDay);
  158.                 }
  159.                 else
  160.                 {
  161.                     Day += plusDay;
  162.                 }
  163.             }
  164.             if (Month == 4 || Month == 6 || Month == 9 || Month == 11)
  165.             {
  166.                 Day = 30;
  167.                 if (Day + plusDay > 30)
  168.                 {
  169.                     plusMonth++;
  170.                     Day = Day - (30 - plusDay);
  171.                 }
  172.                 else
  173.                 {
  174.                     Day += plusDay;
  175.                 }
  176.             }
  177.             if (Month == 2 && VisYear(Year))
  178.             {
  179.                 Day = 29;
  180.                 if (Day + plusDay > 29)
  181.                 {
  182.                     plusMonth++;
  183.                     Day = Day - (29 - plusDay);
  184.                 }
  185.                 else
  186.                 {
  187.                     Day += plusDay;
  188.                 }
  189.  
  190.  
  191.             }
  192.             else if (Month == 2)
  193.             {
  194.                 Day = 28;
  195.                 if (Day + plusDay > 28)
  196.                 {
  197.                     plusMonth++;
  198.                     Day = Day - (28 - plusDay);
  199.                 }
  200.                 else
  201.                 {
  202.                     Day += plusDay;
  203.                 }
  204.             }
  205.             if (Month + plusMonth > 12)
  206.             {
  207.                 plusYear++;
  208.                 Month = Month - (12 - plusMonth);
  209.             }
  210.             else
  211.             {
  212.                 Month += plusMonth;
  213.             }
  214.  
  215.             Year += plusYear;
  216.             Second = second;
  217.         }
  218.         // метод для добавления минут
  219.         public void AddMinute(int minute)
  220.         {
  221.             int plusYear = minute / MinutesInYear;
  222.             minute = minute - plusYear * MinutesInYear;
  223.             int plusMonth = minute / MinutesInMonth;
  224.             minute = minute - plusMonth * MinutesInMonth;
  225.             int plusDay = minute / MinutesInDay;
  226.             minute = minute - plusDay * MinutesInDay;
  227.             int plusHour = minute / MinutesInHour;
  228.             minute = minute - plusHour * MinutesInHour;
  229.             if (minute + Minute > 59)
  230.             {
  231.                 plusHour++;
  232.                 minute = minute - (60 - Minute);
  233.             }
  234.             else
  235.             {
  236.                 minute = Minute + minute;
  237.             }
  238.             Year += plusYear;
  239.             if (Month == 1 || Month == 3 || Month == 5 || Month == 7 || Month == 8 || Month == 10 || Month == 12)
  240.             {
  241.                 Day = 31;
  242.                 if (Day + plusDay > 31)
  243.                 {
  244.                     plusMonth++;
  245.                     Day = Day - (31 - plusDay);
  246.                 }
  247.                 else
  248.                 {
  249.                     Day += plusDay;
  250.                 }
  251.             }
  252.             if (Month == 4 || Month == 6 || Month == 9 || Month == 11)
  253.             {
  254.                 Day = 30;
  255.                 if (Day + plusDay > 30)
  256.                 {
  257.                     plusMonth++;
  258.                     Day = Day - (30 - plusDay);
  259.                 }
  260.                 else
  261.                 {
  262.                     Day += plusDay;
  263.                 }
  264.             }
  265.             if (Month == 2 && VisYear(Year))
  266.             {
  267.                 Day = 29;
  268.                 if (Day + plusDay > 29)
  269.                 {
  270.                     plusMonth++;
  271.                     Day = Day - (29 - plusDay);
  272.                 }
  273.                 else
  274.                 {
  275.                     Day += plusDay;
  276.                 }
  277.  
  278.  
  279.             }
  280.             else if (Month == 2)
  281.             {
  282.                 Day = 28;
  283.                 if (Day + plusDay > 28)
  284.                 {
  285.                     plusMonth++;
  286.                     Day = Day - (28 - plusDay);
  287.                 }
  288.                 else
  289.                 {
  290.                     Day += plusDay;
  291.                 }
  292.             }
  293.             if (Month + plusMonth > 12)
  294.             {
  295.                 plusYear++;
  296.                 Month = Month - (12 - plusMonth);
  297.             }
  298.             else
  299.             {
  300.                 Month += plusMonth;
  301.             }
  302.            
  303.             if (Hour + plusHour > 23)
  304.             {
  305.                 plusHour++;
  306.                 Hour = Hour - (23 - plusHour);
  307.             }
  308.             else
  309.             {
  310.                Hour += plusHour;
  311.             }
  312.             Minute = minute;
  313.         }
  314.         // метод для добавления часа
  315.         public void AddHour(int hour)
  316.         {
  317.             int plusYear = hour / HoursInYear;
  318.             hour = hour - plusYear * HoursInYear;
  319.             int plusMonth = hour / HoursInMonth;
  320.             hour = hour - plusMonth * HoursInMonth;
  321.             int plusDay = hour / HoursInDay;
  322.             hour = hour - plusDay * HoursInDay;
  323.             if (hour + Hour > 24)
  324.             {
  325.                 plusDay++;
  326.                 hour = hour - (24 - Hour);
  327.             }
  328.             else
  329.             {
  330.                 hour = Hour + hour;
  331.             }
  332.            
  333.            
  334.             if (Month == 1 || Month == 3 || Month == 5 || Month == 7 || Month == 8 || Month == 10 || Month == 12)
  335.             {
  336.                 Day = 31;
  337.                 if (Day + plusDay > 31)
  338.                 {
  339.                     plusMonth++;
  340.                     Day = Day - (31 - plusDay);
  341.                 }
  342.                 else
  343.                 {
  344.                     Day += plusDay;
  345.                 }
  346.             }
  347.             if (Month == 4 || Month == 6 || Month == 9 || Month == 11)
  348.             {
  349.                 Day = 30;
  350.                 if (Day + plusDay > 30)
  351.                 {
  352.                     plusMonth++;
  353.                     Day = Day - (30 - plusDay);
  354.                 }
  355.                 else
  356.                 {
  357.                     Day += plusDay;
  358.                 }
  359.             }
  360.             if (Month == 2 && VisYear(Year))
  361.             {
  362.                 Day = 29;
  363.                 if (Day + plusDay > 29)
  364.                 {
  365.                     plusMonth++;
  366.                     Day = Day - (29 - plusDay);
  367.                 }
  368.                 else
  369.                 {
  370.                     Day += plusDay;
  371.                 }
  372.  
  373.  
  374.             }
  375.             else if (Month == 2)
  376.             {
  377.                 Day = 28;
  378.                 if (Day + plusDay > 28)
  379.                 {
  380.                     plusMonth++;
  381.                     Day = Day - (28 - plusDay);
  382.                 }
  383.                 else
  384.                 {
  385.                     Day += plusDay;
  386.                 }
  387.             }
  388.             if (Month + plusMonth > 12)
  389.             {
  390.                 plusYear++;
  391.                 Month = Month - (12 - plusMonth);
  392.             }
  393.             else
  394.             {
  395.                 Month += plusMonth;
  396.             }
  397.             Year += plusYear;
  398.             Hour = hour;
  399.            
  400.         }
  401.         // метод для добавления дня
  402.         public void AddDay(int day)
  403.         {
  404.             int plusYear = day / DayInYear;
  405.             day = day - plusYear * DayInYear;
  406.             int plusMonth = day / DayInMonth;
  407.             day = day - plusMonth * DayInMonth;
  408.  
  409.             switch (Month)
  410.             {
  411.                 case 1:
  412.                 case 3:
  413.                 case 5:
  414.                 case 7:
  415.                 case 8:
  416.                 case 10:
  417.                 case 12:
  418.  
  419.                     if (day + Day > 31)
  420.                     {
  421.                        
  422.                         plusMonth++;    
  423.                         day = day - (31 - Day);
  424.                     }
  425.                     else
  426.                     {
  427.                         day = Day + day;
  428.                     }
  429.  
  430.                    
  431.                     if (Month + plusMonth > 12)
  432.                     {
  433.                         plusYear++;
  434.                         Month = Month - (12 - plusMonth);
  435.                     }
  436.                     else
  437.                     {
  438.                         Month += plusMonth;
  439.                     }
  440.                     Year += plusYear;
  441.                     Day = day;
  442.  
  443.  
  444.                     break;
  445.  
  446.                 case 4:
  447.                 case 6:
  448.                 case 9:
  449.                 case 11:
  450.                     if (day + Day > 30)
  451.                     {
  452.                         plusMonth++;
  453.                         day = day - (30 - Day);
  454.                     }
  455.                     else
  456.                     {
  457.                         day = Day + day;
  458.                     }
  459.                     Year += plusYear;
  460.  
  461.                     if (Month + plusMonth > 12)
  462.                     {
  463.                         plusYear++;
  464.                         Month = Month - (12 - plusMonth);
  465.                     }
  466.                     else
  467.                     {
  468.                         Month += plusMonth;
  469.                     }
  470.                     Day = day;
  471.                     break;
  472.                    
  473.                 case 2:
  474.  
  475.                     if (VisYear(Year))
  476.                     {
  477.                         if (day + Day > 29)
  478.                         {
  479.                             plusMonth++;
  480.                             day = day - (29 - Day);
  481.                         }
  482.                         else
  483.                         {
  484.                             day = Day + day;
  485.                         }
  486.                         Year += plusYear;
  487.                         if (Month + plusMonth > 12)
  488.                         {
  489.                             plusYear++;
  490.                             Month = Month - (12 - plusMonth);
  491.                         }
  492.                         else
  493.                         {
  494.                             Month += plusMonth;
  495.                         }
  496.                         Day = day;
  497.                     }
  498.                     else
  499.                     {
  500.                         if (day + Day > 28)
  501.                         {
  502.                             plusMonth++;
  503.                             day = day - (28 - Day);
  504.                         }
  505.                         else
  506.                         {
  507.                             day = Day + day;
  508.                         }
  509.                         Year += plusYear;
  510.                         if (Month + plusMonth > 12)
  511.                         {
  512.                             plusYear++;
  513.                             Month = Month - (12 - plusMonth);
  514.                         }
  515.                         else
  516.                         {
  517.                             Month += plusMonth;
  518.                         }
  519.                         Day = day;
  520.                     }
  521.                     break;
  522.  
  523.             }
  524.  
  525.         }
  526.         // метод для проверки на високосный год
  527.         public bool VisYear(int year)
  528.         {
  529.             bool flag = false;
  530.             if (year % 4 == 0)
  531.                 flag = true;
  532.             else
  533.                 return flag;
  534.             if (year % 100 == 0)
  535.                 if (year % 400 != 0)
  536.                     flag = false;
  537.             return flag;
  538.         }
  539.         // метод для изменения месяца
  540.         public void AddMonth(int month)
  541.         {
  542.             int plusYear = month / MonthInYear;
  543.             month = month - plusYear * MonthInYear;
  544.  
  545.             if (month + Month > 12)
  546.             {
  547.                 plusYear++;
  548.                 month = month - (12 - Month);
  549.             }
  550.             else
  551.             {
  552.                 month = Month + month;
  553.             }
  554.             Year += plusYear;
  555.             Month = month;
  556.  
  557.  
  558.         }
  559.         // метод для изменения года
  560.         public void AddYear(int year)
  561.         {
  562.             year = Year + year;
  563.             Year = year;
  564.  
  565.         }
  566.         // метод для вывода все на экран
  567.         public void Write()
  568.         {
  569.             if (Day < 10 && Month < 10)
  570.             {
  571.                 if (Hour < 10 && Minute < 10 && Second < 10)
  572.                 {
  573.                     Console.WriteLine("0{0}.0{1}.{2} 0{3}:0{4}:0{5}", Day, Month, Year, Hour, Minute, Second);
  574.                 }
  575.                 else if (Hour < 10 && Minute < 10)
  576.                 {
  577.                     Console.WriteLine("0{0}.0{1}.{2} 0{3}:0{4}:{5}", Day, Month, Year, Hour, Minute, Second);
  578.                 }
  579.                 else if (Hour < 10 && Second < 10)
  580.                 {
  581.                     Console.WriteLine("0{0}.0{1}.{2} 0{3}:{4}:0{5}", Day, Month, Year, Hour, Minute, Second);
  582.                 }
  583.                 else if (Second < 10 && Minute < 10)
  584.                 {
  585.                     Console.WriteLine("0{0}.0{1}.{2} {3}:0{4}:0{5}", Day, Month, Year, Hour, Minute, Second);
  586.                 }
  587.                 else if (Hour < 10)
  588.                 {
  589.                     Console.WriteLine("0{0}.0{1}.{2} 0{3}:{4}:{5}", Day, Month, Year, Hour, Minute, Second);
  590.                 }
  591.                 else if (Second < 10)
  592.                 {
  593.                     Console.WriteLine("0{0}.0{1}.{2} {3}:{4}:0{5}", Day, Month, Year, Hour, Minute, Second);
  594.                 }
  595.                 else if (Minute < 10)
  596.                 {
  597.                     Console.WriteLine("0{0}.0{1}.{2} {3}:0{4}:{5}", Day, Month, Year, Hour, Minute, Second);
  598.                 }
  599.                 else
  600.                 {
  601.                     Console.WriteLine("0{0}.0{1}.{2} {3}:{4}:{5}", Day, Month, Year, Hour, Minute, Second);
  602.                 }
  603.             }
  604.             else if (Day < 10)
  605.             {
  606.                 if (Hour < 10 && Minute < 10 && Second < 10)
  607.                 {
  608.                     Console.WriteLine("0{0}.{1}.{2} 0{3}:0{4}:0{5}", Day, Month, Year, Hour, Minute, Second);
  609.                 }
  610.                 else if (Hour < 10 && Minute < 10)
  611.                 {
  612.                     Console.WriteLine("0{0}.{1}.{2} 0{3}:0{4}:{5}", Day, Month, Year, Hour, Minute, Second);
  613.                 }
  614.                 else if (Hour < 10 && Second < 10)
  615.                 {
  616.                     Console.WriteLine("0{0}.{1}.{2} 0{3}:{4}:0{5}", Day, Month, Year, Hour, Minute, Second);
  617.                 }
  618.                 else if (Second < 10 && Minute < 10)
  619.                 {
  620.                     Console.WriteLine("0{0}.{1}.{2} {3}:0{4}:0{5}", Day, Month, Year, Hour, Minute, Second);
  621.                 }
  622.                 else if (Hour < 10)
  623.                 {
  624.                     Console.WriteLine("0{0}.{1}.{2} 0{3}:{4}:{5}", Day, Month, Year, Hour, Minute, Second);
  625.                 }
  626.                 else if (Second < 10)
  627.                 {
  628.                     Console.WriteLine("0{0}.{1}.{2} {3}:{4}:0{5}", Day, Month, Year, Hour, Minute, Second);
  629.                 }
  630.                 else if (Minute < 10)
  631.                 {
  632.                     Console.WriteLine("0{0}.{1}.{2} {3}:0{4}:{5}", Day, Month, Year, Hour, Minute, Second);
  633.                 }
  634.                 else
  635.                 {
  636.                     Console.WriteLine("0{0}.{1}.{2} {3}:{4}:{5}", Day, Month, Year, Hour, Minute, Second);
  637.                 }
  638.  
  639.             }
  640.             else if (Month < 10)
  641.             {
  642.                 if (Hour < 10 && Minute < 10 && Second < 10)
  643.                 {
  644.                     Console.WriteLine("{0}.0{1}.{2} 0{3}:0{4}:0{5}", Day, Month, Year, Hour, Minute, Second);
  645.                 }
  646.                 else if (Hour < 10 && Minute < 10)
  647.                 {
  648.                     Console.WriteLine("{0}.0{1}.{2} 0{3}:0{4}:{5}", Day, Month, Year, Hour, Minute, Second);
  649.                 }
  650.                 else if (Hour < 10 && Second < 10)
  651.                 {
  652.                     Console.WriteLine("{0}.0{1}.{2} 0{3}:{4}:0{5}", Day, Month, Year, Hour, Minute, Second);
  653.                 }
  654.                 else if (Second < 10 && Minute < 10)
  655.                 {
  656.                     Console.WriteLine("{0}.0{1}.{2} {3}:0{4}:0{5}", Day, Month, Year, Hour, Minute, Second);
  657.                 }
  658.                 else if (Hour < 10)
  659.                 {
  660.                     Console.WriteLine("{0}.0{1}.{2} 0{3}:{4}:{5}", Day, Month, Year, Hour, Minute, Second);
  661.                 }
  662.                 else if (Second < 10)
  663.                 {
  664.                     Console.WriteLine("{0}.0{1}.{2} {3}:{4}:0{5}", Day, Month, Year, Hour, Minute, Second);
  665.                 }
  666.                 else if (Minute < 10)
  667.                 {
  668.                     Console.WriteLine("{0}.0{1}.{2} {3}:0{4}:{5}", Day, Month, Year, Hour, Minute, Second);
  669.                 }
  670.                 else
  671.                 {
  672.                     Console.WriteLine("{0}.0{1}.{2} {3}:{4}:{5}", Day, Month, Year, Hour, Minute, Second);
  673.                 }
  674.             }
  675.             else
  676.             {
  677.                 if (Hour < 10 && Minute < 10 && Second < 10)
  678.                 {
  679.                     Console.WriteLine("{0}.{1}.{2} 0{3}:0{4}:0{5}", Day, Month, Year, Hour, Minute, Second);
  680.                 }
  681.                 else if (Hour < 10 && Minute < 10)
  682.                 {
  683.                     Console.WriteLine("{0}.{1}.{2} 0{3}:0{4}:{5}", Day, Month, Year, Hour, Minute, Second);
  684.                 }
  685.                 else if (Hour < 10 && Second < 10)
  686.                 {
  687.                     Console.WriteLine("{0}.{1}.{2} 0{3}:{4}:0{5}", Day, Month, Year, Hour, Minute, Second);
  688.                 }
  689.                 else if (Second < 10 && Minute < 10)
  690.                 {
  691.                     Console.WriteLine("{0}.{1}.{2} {3}:0{4}:0{5}", Day, Month, Year, Hour, Minute, Second);
  692.                 }
  693.                 else if (Hour < 10)
  694.                 {
  695.                     Console.WriteLine("{0}.{1}.{2} 0{3}:{4}:{5}", Day, Month, Year, Hour, Minute, Second);
  696.                 }
  697.                 else if (Second < 10)
  698.                 {
  699.                     Console.WriteLine("{0}.{1}.{2} {3}:{4}:0{5}", Day, Month, Year, Hour, Minute, Second);
  700.                 }
  701.                 else if (Minute < 10)
  702.                 {
  703.                     Console.WriteLine("{0}.{1}.{2} {3}:0{4}:{5}", Day, Month, Year, Hour, Minute, Second);
  704.                 }
  705.                 else
  706.                 {
  707.                     Console.WriteLine("{0}.{1}.{2} {3}:{4}:{5}", Day, Month, Year, Hour, Minute, Second);
  708.                 }
  709.             }
  710.         }
  711.  
  712.  
  713.     }
  714. }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы