Files
2025-05-13 02:46:21 +03:00

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__