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

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


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

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

13   голосов , оценка 4 из 5
Похожие ответы