#include "Age.h" #include #include Age::Age(unsigned int years, unsigned int months) : m_years(years) , m_months(months) { } Age::Age(const QDate &birth, const QDate &reference) { if (reference < birth) { qDebug() << "test (" << reference << ") before birth (" << birth << ")"; m_years = 0; m_months = 0; return; } int years = reference.year() - birth.year(); int months = reference.month() - birth.month(); if (months == 0 && reference.day() < birth.day()) { months--; } if (months < 0) { years--; months = (months + 12) % 12; } m_years = years; m_months = months; } bool Age::operator<(const Age &cmp) const { if (m_years == cmp.m_years) { return m_months < cmp.m_months; } return m_years < cmp.m_years; } unsigned int Age::years() const { return m_years; } unsigned int Age::months() const { return m_months; } std::string Age::toString() const { std::ostringstream result; result << m_years << ";" << m_months; return result.str(); }