------------------------------------------------------------------------
                             my_time
------------------------------------------------------------------------

my_time ist eine Softwarebibliothek, die wie die Standardbibliothek
time.h aus einem Zeitstempel ein dazugehoerendes Datum oder aus
einem Datum einen Zeitstempel berechnen kann.

Der Einfachkeit halber wird im Gegensatz zu time.h NICHT mit Zeigern
gearbeitet (was einen etwas hoeheren RAM-Speicherbedarf zur Folge
hat.

Der Zeitstempel hier ist eine einfache 32-Bit Integervariable.
Diese Variable berechnet fuer ein bestimmtes Datum, wieviele
Sekunden seit dem 01.01.1970 00:00.00 vergangen sind (sofern
das define < yearofs > nicht veraendert wird. Hieraus ergeben sich
gueltige Daten (Daten ist der Plural von Datum):

     01.01.1970 00:00.0   bis  06.02.2106 06:28.15

my_time wurde geschrieben, um auf einfache Weise mit einem Datum
bspw. fuer einen Datenlogger oder eine Zeitschaltuhr rechnen zu
koennen.

Das Zaehlen von Sekunden und aufaddieren zu Minuten, Stunden usw.
wird hiermit hinfaellig, es muss nur noch zu einem Zeitstempel
die entsprechenden Sekunden hinzuaddiert oder subtrahiert werden.

Um bspw. eine Uhr zu programmieren muss lediglich in einem Interrupt-
vektor, der jede Sekunde aufgerufen wird, der Zeitstempel inkrementiert
werden.

my_time deklariert eine Struktur, MYDATE_TIME deren Member

          year, month, day, hour, min, sec

beinhalten. Hiervon wird ein Variablentyp < mydate_time > abgeleitet.

Um mit my_time arbeiten zu koennen ist es dann lediglich nur noch
noetig, eine Variable diesen Typs zu definieren (Beispiel):

                  my_datetime  meinezeit;

Das Beschreiben der Struktur geschieht hier wie mit jeder anderen
Struktur auch:

    meinezeit.year= 2024;
    meinezeit.month= 7:
    meinezeit.day= 1;
    meinezeit.hour= 19;
    meinezeit.min= 34;
    meinezeit.sec= 33;

Um aus dieser Struktur einen Zeitstempel zu generieren bedarf es des
Aufrufes von < mydate_getstamp(mydate_time mydate);

    uint32_t zeitstempel;

    zeitstempel= mydate_getstamp(meinezeit);

Die Variable < zeitstempel > enthaelt nun die Anzahl Sekunden, die
seit dem 01.01.1970 vergangen sind, fuer das Datum

                 01.07.2024 | 19:34.33

entspricht dieses 1719862473.

Um aus einem gegebenen Zeitstempel ein Datum zu generieren muss die
Funktion < mydate_get(uint32_t stamp) > aufgerufen werden:

    uint32_t zeitstempel2;
    my_datetime meinezeit2;

    zeitstempel2 = zeitstempel + 3600;
    meinezeit2= mydate_get(zeitstempel2);

Das Datum in < meinezeit2 > ist hier nun eine Stunde spaeter als in
< meinezeit >

Ein Wochentag kann mittels < mydate_getwtag(mydate_time mydate) >
ermittelt werden:

    char wochentag;

    wochentag= mydate_getwtag(meinezeit2);

Der Rueckgabewert von < mydate_getwtag > beginnt mit 0 und dieses
repraesentiert den Tag Sonntag. Der 01.07.2024 war ein Montag und
demzufolge wird beim obigen Aufruf der Wert 1 zurueck geliefert.



  Definierte Funktionen
------------------------------------------------------------------------

------------------------------------------------------------------------
               mydate_time mydate_get(uint32_t stamp);
------------------------------------------------------------------------

Ermittelt aus einem Zeitstempel (Sekunden die seit dem 01.01.1970
00:00.00 vergangen sind) das Datum.

Uebergabe:
  stamp : Anzahl Sekunden seit dem 01.01.1970

Rueckgabe:
  Struktur, in der year, month, day, hour, min und sec
  abgebildet werdenn.


------------------------------------------------------------------------
            uint32_t mydate_getstamp(mydate_time mydate);
------------------------------------------------------------------------

Ermittelt aus einem Kalenderdatum der Struktur mydate den
Zeitstempel (vergangene Sekunden seit dem 01.01.1970
00:00.0)

Uebergabe:
  mydate: Struktur fuer year, month, day, hour, min, sec

Rueckgabe:
  Zeitstempel in Sekunden


------------------------------------------------------------------------
            char mydate_getwtag(mydate_time mydate);
------------------------------------------------------------------------

Berechnet zu einem bestimmten Datum der Struktur mydate den Wochentag
(Algorithmus nach Carl Friedrich Gauss):

Uebergabe:
  mydate: Struktur fuer year, month, day, hour, min, sec

Rueckgabe:
  der Tag der Woche, beginnend ab Sonntag. Sonntag entspricht 0.

  Bsp.: 01.07.2024 06:03.08

  Rueckgabewert ist hier 1 und somit entspricht diese Datum dem
  Kalendertag Montag.
