Найти промежуток между двумя временными точками - C#
Формулировка задачи:
Помогите решить задачу, плиз. Нужно разработать класс на языке с# который для заданных начала и конца некоторого промежутка времени в часах, минутах и секундах ( в пределах одних суток) находит продолжительность промежутка времени в тех же единицах измерения. Например: длительность временного интервала с 9:40:00 по 11:20:00 составляет 1 час. 30 мин. 0 сек.
Решение задачи: «Найти промежуток между двумя временными точками»
textual
Листинг программы
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { Console.WriteLine(new DayTime(21,45,55) - new DayTime(3,55,50)); var span = new TimeSpan(21, 45, 55) - new TimeSpan(3, 55, 50); //для Console.WriteLine("{0} ч. {1} м. {2} с. //timespan", span.Hours, span.Minutes, span.Seconds); // проверки Console.WriteLine(new DayTime(15, 45, 55) + new DayTime(3, 55, 50)); span = new TimeSpan(15, 45, 55) + new TimeSpan(3, 55, 50); //для Console.WriteLine("{0} ч. {1} м. {2} с. //timespan", span.Hours, span.Minutes, span.Seconds); // проверки try { Console.WriteLine(new DayTime(3, 45, 55) - new DayTime(3, 55, 50)); //если большее от меньшего отнимаем - словим ексепшн } catch (Exception ex) { Console.WriteLine(ex.Message); } try { new DayTime(34, 34, 34); } catch (Exception ex) { Console.WriteLine(ex.Message); } Console.ReadKey(); } class DayTime { int _hours; int _minutes; int _seconds; public int Hours { get { return _hours ; } set { if (value >= 0 && value <= 23) _hours = value; else throw new ArgumentException("Wrong parameter!","Hours"); }} public int Minutes { get { return _minutes; } set { if (value >= 0 && value <= 59) _minutes = value; else throw new ArgumentException("Wrong parameter!", "Minutes"); }} public int Seconds { get { return _seconds; } set { _seconds = value; if (value >= 0 && value <= 59) _seconds = value; else throw new ArgumentException("Wrong parameter!", "Seconds"); }} public static DayTime operator +(DayTime dt1, DayTime dt2) { int h = dt1.Hours + dt2.Hours; int m = dt1.Minutes + dt2.Minutes; int s = dt1.Seconds + dt2.Seconds; if (s > 59) { m++; s -= 60; } if (m > 59) { h++; m -= 60; } if (h > 23) throw new Exception("Overflow (+) DayTime!"); return new DayTime(h, m, s); } public static DayTime operator -(DayTime dt1, DayTime dt2) { int h = dt1.Hours - dt2.Hours; int m = dt1.Minutes - dt2.Minutes; int s = dt1.Seconds - dt2.Seconds; if (s < 0) { m--; s = 60 + s; } if (m < 0) { h--; m = 60 + m; } if (h < 0) throw new Exception("DayTime < 0!"); return new DayTime(h, m, s); } public DayTime(int _h,int _m,int _s) { if (_h >= 0 && _h <= 23) _hours = _h; else throw new ArgumentException("Wrong parameter!", "Hours"); if (_m >= 0 && _m <= 59) _minutes = _m; else throw new ArgumentException("Wrong parameter!", "Minutes"); if (_s >= 0 && _s <= 59) _seconds = _s; else throw new ArgumentException("Wrong parameter!", "Seconds"); } public override string ToString() { return string.Format("{0}:{1}:{2}", _hours.ToString().PadLeft(2, '0'), _minutes.ToString().PadLeft(2, '0'), _seconds.ToString().PadLeft(2, '0')); } } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д