//---------------------------------------------------------------------------

#ifndef datumH_3435
#define datumH_3435

/*

Datum.h
Besitzt alle nötigen Funktionen um ein Datum darzustellen, abzuspeichern
einzulesen und zu vergleichen.

Anwendung:
Datum.h evt. umbenennen und in den Include Pfad kopieren
(oder Pfad wo Header Dateien erwartet werden)
Datum.obj evt umbennen und in den Pfad für Objektdateien kopieren
Dem Compiler die Objektdatei bekanntgeben
Sollte in einer .cpp Datei die Uhrzeit gebraucht werden am Anfang:
#include "Uhrzeit.h"
und dann entweder using namespace mr;
oder jedesmal mit mr::Uhrzeit aufrufen

Bsp:
//user.c
int main() {
        Datum Jetzt;
        Jetzt.SetDatum();               //aktuelles Datum wird gesetzt
        cout << Jetzt << endl;          //Datum wird ausgegeben
        ofstream Datei ("c:\\datum.dat",ios::binary|ios::out);
        Jetzt.Save(Datei);              //Jetzt wird in datum.dat kopiert
        Datei.close();

        Datum dMorgen;
        ifstream InDatei ("c:\\datum.dat",ios::binary|ios::out);
        dMorgen.Load(InDatei);          //Datum ist in dMorgen
        cout << dMorgen << endl;
}

*/

//Author: Markus Raab
//Firma:  Metropolitan

// 24. August 2001

#include 
#include 
using namespace std;

#ifdef __cplusplus
namespace mr
{
#endif

class Overflow {}; //wird bei zahlenueberlauf geworfen

class Datum
{
private:
        short itsTag, itsMonat, itsJahr;
public:
        Datum (int itsTag = 1, int itsMonat = 1, int itsJahr = 1)
        {
                if (!SetDatum(itsTag, itsMonat, itsJahr))
                        itsTag = itsMonat = itsJahr = 1;
        }

                //Konstruktor und Defaultkonstruktor

        void SetDatum();

                //setzt akutelles Datum

        bool SetDatum(int itsTag, int itsMonat, int itsJahr);

                //ueberprueftes einlesen eines Datums

        bool SetTag(int Tag);
        bool SetMonat(int Monat);
        bool SetJahr(int Jahr);

                //Achtung:: IMMER zuerst Tag setzen, sonst ist Ueberpruefung bei
                //Monat undefiniert!!! (Februartage usw)
                //geschuetzte Zugriffsmethoden

protected:
        void Tag(int tag)       {itsTag = tag;}
        void Monat(int monat)   {itsMonat = monat;}
        void Jahr(int jahr)     {itsJahr = jahr;}

                //besonders schneller zugriff! Sollte NICHT verwendet werden!

public:

        int GetTag()    const {return itsTag;}
        int GetMonat()  const {return itsMonat;}
        int GetJahr()   const {return itsJahr;}

                //man kann jedes Element einzeln lesen

        string AsString() const;
        void SetString(string str);

        void AsChar(char * ch) const;
        void SetChar (char * str);

        int AsTage() const;
        int AsMonate() const;
        int AsJahre() const;

                //benoetigte Vergleichsoperatoren:

        bool operator != (const Datum & d) const;
        bool operator == (const Datum & d) const;

        bool operator >= (const Datum & d) const;
        bool operator <= (const Datum & d) const;

        bool operator >  (const Datum & d) const;
        bool operator <  (const Datum & d) const;

                //Ausgabeoperatoren fuer Console

        friend ostream & operator << (ostream & os, Datum & d);
        friend istream & operator >> (istream & is, Datum & d);

                //Ausgabeoperatoren fuer Dateien

        bool Save (ofstream & os);
        bool Load (ifstream & os);
};

        //so wird ein Schaltjahr berechnet!

inline bool isLeapYear (int itsJahr)
{
        return (itsJahr % 4 == 0 && itsJahr %100 != 0) || itsJahr % 400 == 0;
}

#ifdef __cplusplus
} //MR ende
#endif

#endif
Fr Jul 30 13:54:24 CEST 2021
patent_button.gif valid-html401.png elektra.jpg fsfe-logo.png valid-css.png vim.gif anybrowser.gif