bool CDateTime::operator ==(const CDateTime& datetime) const { return (datetime.getYear() == m_year && datetime.getMonth() == m_month && datetime.getDay() == m_day && datetime.getHour() == m_hour && datetime.getMinute() == m_minute && datetime.getSecond() == m_second ); }
bool CDateTime::operator>=(const CDateTime& datetime) const { return (datetime.getYear() <= m_year || datetime.getMonth() <= m_month || datetime.getDay() <= m_day || datetime.getHour() <= m_hour || datetime.getMinute() <= m_minute || datetime.getSecond() <= m_second ); }
TDuration CDateTime::operator-(const CDateTime &datetime) const { TDuration d = { 0, 0 }; if (!isValid() || !datetime.isValid()) { return d; } int year = datetime.getYear(); // Différence de jours int n1 = dayOfYear(m_year, m_month, m_day) - 1; int n2 = dayOfYear(year, datetime.getMonth(), datetime.getDay()) - 1; d.days = n1 - n2; // Durée positive if (year < m_year) { for (int a = year; a < m_year; ++a) { d.days += (isLeapYear(a) ? 366 : 365); } } // Durée négative else if (year > m_year) { for (int a = m_year; a < year; ++a) { d.days -= (isLeapYear(a) ? 366 : 365); } } // Différence de secondes int s1 = 3600 * m_hour + 60 * m_minute + m_second; int s2 = 3600 * datetime.getHour() + 60 * datetime.getMinute() + datetime.getSecond(); d.seconds = s1 - s2; // Le nombre de secondes et le nombre de jours doivent être du même signe if (d.seconds < 0 && d.days > 0) { --d.days; d.seconds += 86400; } else if (d.seconds > 0 && d.days < 0) { ++d.days; d.seconds -= 86400; } return d; }