95 lines
2 KiB
C++
95 lines
2 KiB
C++
#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;
|
|
}
|