#include "Datum.h" static const char *napnevek[] = {"Hetfo", "Kedd", "Szerda", "Csutortok", "Pentek", "Szombat", "Vasarnap"}; int Datum::honap_napok[] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; std::ostream &operator<<(std::ostream &os, napnev nap) { return os << napnevek[nap]; } bool Datum::operator==(const Datum& nap1) const{ return nap1.equal(*this) || equal(nap1); } bool Datum::equal(const Datum &nap2) const{ return ev == nap2.ev && honap == nap2.honap && nap == nap2.nap; } bool Datum::operator!=(const Datum &nap2) const{ return !(*this == nap2); } int Datum::getEv() const { return ev; } int Datum::getHonap() const { return honap; } int Datum::getNap() const { return nap; } const char *Datum::getMegjegyzes() const { return megjegyzes; } napnev Datum::getNapnev() { Datum n; int diff = ((*this) - n); diff += 3; diff %= 7; return (napnev) (diff); } int Datum::szokoev() const { if (honap <= 2) return (ev - 1) / 4 - (ev - 1) / 100 + (ev - 1) / 400; return ev / 4 - ev / 100 + ev / 400; } int Datum::operator-(const Datum &nap1) const{ return napszam() - nap1.napszam(); } int Datum::napszam() const { int n = ev * 365 + nap + szokoev(); for (int i = 0; i < honap - 1; i++) n += honap_napok[i]; return n; } Datum::Datum(const Datum &d) : ev(d.ev), honap(d.honap), nap(d.nap) { strcpy(megjegyzes, d.megjegyzes); } Datum& Datum::operator =(const Datum& d){ ev = d.getEv(); honap = d.getHonap(); nap = d.getNap(); strcpy(megjegyzes, d.getMegjegyzes()); return *this; } bool Datum::operator<(const Datum &nap) const{ return napszam() < nap.napszam(); } bool Datum::operator<=(const Datum &nap) const{ return napszam() <= nap.napszam(); } bool Datum::operator>(const Datum &nap) const{ return napszam() > nap.napszam(); } bool Datum::operator>=(const Datum &nap) const{ return napszam() >= nap.napszam(); } int Datum::getUnixTime() { //1 nap = 86400 másodperc return ((*this) - Datum()) * 86400; }