Найти промежуток между двумя временными точками - 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'));
}
}
}
}