137 lines
2.2 KiB
C++
137 lines
2.2 KiB
C++
#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__
|