This repo is archived. You can view files and clone it, but cannot push or open issues or pull requests.
hf_naptar/Datum.cpp
2020-05-15 12:36:07 +02:00

97 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) {
strncpy(megjegyzes, d.megjegyzes,128);
}
Datum& Datum::operator =(const Datum& d){
if(this != &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;
}