#ifndef DayTime_h__ #define DayTime_h__ class DayTime { public: static const int MaxSeconds = 24 * 3600; int Hours, Minutes, Seconds; DayTime(int hours, int minutes, int seconds) { Hours = hours; Minutes = minutes; Seconds = seconds; } DayTime() { Hours = 0; Minutes = 0; Seconds = 0; } DayTime(int time) { int dc1 = time % 3600; int dc2 = dc1 % 60; Hours = ((time - dc1) / 3600) % 24; Minutes = (dc1 - dc2) / 60; Seconds = dc2; } int ToSeconds() const { return Hours * 3600 + Minutes * 60 + Seconds; } bool operator >=(const DayTime& right) const { return ToSeconds() >= right.ToSeconds(); } bool operator <=(const DayTime& right) const { return ToSeconds() <= right.ToSeconds(); } bool operator >(const DayTime& right) const { return ToSeconds() > right.ToSeconds(); } bool operator <(const DayTime& right) const { return ToSeconds() < right.ToSeconds(); } bool operator !=(const DayTime& right) const { return ToSeconds() != right.ToSeconds(); } bool operator ==(const DayTime& right) const { return ToSeconds() == right.ToSeconds(); } DayTime operator +(const DayTime& right) const { int sum = ToSeconds() + right.ToSeconds(); return DayTime(sum); } DayTime operator +(int time) const { int sum = ToSeconds() + time; return DayTime(sum); } DayTime operator -(const DayTime& right) const { int t1 = ToSeconds(); int t2 = right.ToSeconds(); int s = 0; if (t1 < t2) { s = MaxSeconds - t2 + t1; } else s = t1 - t2; return DayTime(s); } DayTime operator -(int time) { int t1 = ToSeconds(); int t2 = time; int s = 0; if (t1 < t2) { s = MaxSeconds - t2 + t1; } else s = t1 - t2; return DayTime(s); } DayTime operator /(int divider) const { return DayTime(ToSeconds() / divider); } DayTime operator /(const DayTime& divider) const { return DayTime(ToSeconds() / divider.ToSeconds()); } void Add(const DayTime& time) { SetTime(ToSeconds() + time.ToSeconds()); } void Add(int time) { SetTime(ToSeconds() + time); } void SetTime(int time) { int dc1 = time % 3600; int dc2 = dc1 % 60; Hours = ((time - dc1) / 3600) % 24; Minutes = (dc1 - dc2) / 60; Seconds = dc2; } }; #endif // DayTime_h__