Exemplo n.º 1
0
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 );
}
Exemplo n.º 2
0
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 );
}
Exemplo n.º 3
0
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;
}