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

#ifndef UhrzeitH_238329
#define UhrzeitH_238329

/*

Diese Klasse liefert benötigte Zeitfunktionen um eine Tageszeit
anzuzeigen, berechnen und umzurechnen

Anwendung:
Uhrzeit.h evt. umbenennen und in den Include Pfad kopieren
(oder Pfad wo Header Dateien erwartet werden)
Uhrzeit.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:

#include 
#include "Uhrzeit.h"
using namespace std;
using namespace mr;

int main ()
{
        Uhrzeit Guten_Morgen (10); //10 Uhr
        Uhrzeit Jetzt;
        Jetzt.SetZeit();          //stellt Jetzt auf aktuelle Zeit
        if (Jetzt < Guten_Morgen)
                std::cout << "Guten Morgen, es ist " << Jetzt << " Uhr";
        else
                cout << Jetzt << endl;
        cin.get();
        return 0;               //Teil OS mit, dass kein Fehler auftrat
}

*/



//Author: Markus Raab
//Firma:  Metropolitan

// 9. August 2001

#include 
#include 
#include 
using namespace std;

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


using namespace std;

namespace mr
{

class  Uhrzeit
{
private:
        int itsStunden, itsMinuten, itsSekunden;

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

public: // Funktionen

        Uhrzeit(int Stunden = 0, int Minuten = 0, int Sekunden = 0);

                //Ueberlauf beachten    (im Anhang A)
                //Default Werte         (im Anhang B)

        ~Uhrzeit();

        bool SetZeit();

                //speichert aktuelle Zeit in das Objekt

        bool SetZeit(int Stunden, int Minuten = 0, int Sekunden = 0);

                //setzt die Zeit auf diese Werte
                //Default Werte         (im Anhang B)
                //es muss aber 1 Wert vorhanden sein, sonst aktuelle Zeit
                //KEINE Verschiebung    (im Anhang C)

        bool AddZeit(int Stunden, int Minuten = 0, int Sekunden = 0);

                //Verschiebung          (im Anhang C)
                //bei Fehler wird die vorige Zeit wiederhergestellt und false
                //geliefert
                //Negative Zahlen haben undefiniertes Ergebnis!

        bool Save(ofstream & os) const;
        bool Load(ifstream & is);

                //Speicher und Laden    (im Anhang D)

        bool SetSekunden (int Sekunden);
        bool SetMinuten  (int Minuten);
        bool SetStunden  (int Stunden);

                //damit kann man die Sekunden, Minuten und Stunden einspeichern
                //bei Fehler wird der Wert auf 0 gesetzt und false geliefert
                //KEINE Verschiebung    (im Anhang C)

        bool SetString (string & String);
        bool SetChar   (char * Char);

                //Char oder string uebergeben
                //8 Zeichen lang xx.xx:xx (Zwischenzeichen beliebig)
                //achtung char muss 9 lang sein def: char test [9];

        bool AddSekunden (int Sekunden);
        bool AddMinuten  (int Minuten);
        bool AddStunden  (int Stunden);

                //Verschiebung:         (im Anhang C)

protected:

        void Sekunden     (int Sekunden) {itsSekunden = Sekunden;}
        void Minuten      (int Minuten)  {itsMinuten  = Minuten;}
        void Stunden      (int Stunden)  {itsStunden  = Stunden;}

                //Zeit wird OHNE JEDLICHE UBERPRUEFUNG uebergeben
                //ABSTURZGEFAHR, sollte NICHT verwendet werden!!!
                //Ist NUR fuer Abgeleitete Klassen, die einen schnellen
                //Zugriff benoetigen

public:

        int AsSekunden () const;
        int AsMinuten  () const;
        int AsStunden  () const;

                //liefert Zahlen in verschieden Einheiten z.B:
                //AsSekunden(): 1800 AsMinuten():30 AsStunden(): 0.5

        string AsString () const;
        void   AsChar   (char *) const;

                //liefert die Zeit als string ( includieren!) oder char*


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

public:

        //definiert benoetigte Operatoren

        Uhrzeit operator -() const;

                //da negative Zeit nicht erlaubt, setzt der operator Zeit auf 0

        Uhrzeit operator + (const Uhrzeit & Time);
        Uhrzeit operator - (const Uhrzeit & Time);

        Uhrzeit operator * (const Uhrzeit & Time);
        Uhrzeit operator / (const Uhrzeit & Time);

                //Operator / dividiert die Werte einzeln, sollte eine division
                //durch 0 sein, wird 0 als Ergebnis geliefert

        Uhrzeit & operator += (const Uhrzeit & Time);
        Uhrzeit & operator -= (const Uhrzeit & Time);

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

public:

        //alle benoetigen Vergleichsoperatoren

        const bool operator >  (const Uhrzeit & Time);
        const bool operator <  (const Uhrzeit & Time);
        const bool operator <= (const Uhrzeit & Time);
        const bool operator >= (const Uhrzeit & Time);

        const bool operator == (const Uhrzeit & Time);
        const bool operator != (const Uhrzeit & Time);

public: //inline

        int GetSekunden () const {return itsSekunden;}
        int GetMinuten  () const {return itsMinuten ;}
        int GetStunden  () const {return itsStunden ;}
                //Einzelwerte koennen auch gelesen werden
};

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

ostream& operator << (ostream & os, Uhrzeit & Time);
istream& operator >> (istream & is, Uhrzeit & Time);


/*

Bsp:
#include "Uhrzeit.h"
#include 
using namespace mr;

int main() {
        Uhrzeit Heute (10,20,30);
        std::cout << Heute;                //Gibt Datum auf Konsole
        std::cin >> Heute;                 //Liest neue Zeit ein (xx.xx.xx)
}

*/

} //MR ende

#endif // UhrzeitH_238329

/*

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

Anhang A
Ueberlaufe werden folgendermassen behandelt

Ueberlauf bei Initialisierung
Die Stunden werden 0 gesetzt, sonst wird die gewuenscht Zeit angezeigt
z.b: Uhrzeit Abend (40,15,12) -> (00.15:12)
     Uhrzeit Frueh (20,12,10000000) -> (20.12:00)
ABER: handelt es sich um keinen Ueberlauf, wird die Zeit umgerechnet!!!!
z.b: Uhrzeit Click (12,15,80) -> (12.16:20)

Ueberlauf bei Rechenoperationen und bei AddSekunden, AddMinuten, AddStunden
Zeit bleibt gleich
z.B  Uhrzeit Termin1 (12,30,10); Termin1.AddSekunden (1000000);
      -> Termin1     (12.30:10);
ABER: handelt es sich um keinen Ueberlauf, wird die Zeit umgerechnet!!!!


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

Anhang B
Default Werte

werden nur 2 Werte ubergeben:
Sekunden = 0
wird nur 1 Wert ubergeben:
Minuten = 0, Sekunden = 0
wird kein Wert ubergeben: (Default Konstruktor)
Stunden = 0, Minuten = 0, Sekunden = 0


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

Anhang C
Verschiebung

Bei bestimmten Funktionen ist teilweise eine Verschiebung beabsichtigt.
Dabei handelt es sich um Weitergeben von Zahlen bei Ueberlauf von Sekunden
oder Minuten

Bsp:  Uhrzeit T1 (2,180,300) ->  T1 (05.06:00)
      weil 300 sec 6 Minuten sind (werden zu Stunden addiert)
      weil 180 min 3 Stunden sind (werden zu Stunden addiert)


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

Anhang D
Speichern und Laden

Dazu muss eine ofstream Datei mit den Flags ios::binary | ios::out
geoeffnet werden.
Die "Datei" dann beim Speicher uebergeben
Beim Laden muss eine ifstream Datei mit denselben Flags
geoffnet werden.
Wichtig:  includieren und namespace std verwenden)
Bsp:

#include "Uhrzeit.h"
#include 
using namespace mr;
int main() {
        std::ofstream Datei ("[Laufwerk]:\\[Pfad]\\[Dateiname].[Anhang]"
                ,ios::binary | ios::out);
        Uhrzeit Jetzt; Jetzt.SetTime();
        Jetzt.Save (Datei);
        //ACHTUNG!!! wollen sie hier schon von der Datei lesen, muessen sie die
        //Datei schliessen!!! :
        Datei.close(); //eigentlich unnütz, da der Destruktor von ofstream diese
                        //aktion erledigt
}

Bsp:
#include "Uhrzeit.h"
#include 
using namespace mr;
int main() {
        std::ifstream Datei ("C:\\Hallo\\jetzt.dat", ios::binary | ios::out);
        Uhrzeit WieSpaet; WieSpaet.Load(Datei);
}

*/

//---------------------------------------------------------------------------
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