Provided by: manpages-de-dev_2.5-1_all bug

BEZEICHNUNG

       getdate - zerlegt eine Datum-plus-Zeit-Zeichenkette in ihre Bestandteile

ÜBERSICHT

       #include <time.h>

       struct tm *getdate(const char *string);

       extern int getdate_err;

       #include <time.h>

       int getdate_r(const char *string, struct tm *res);

   Mit Glibc erforderliche Makros (siehe feature_test_macros(7)):

       getdate():
           _XOPEN_SOURCE >= 500
       getdate_r():
           _GNU_SOURCE

BESCHREIBUNG

       Die  Funktion  getdate()  zerlegt eine als Zeichenkette gegebene Darstellung von Datum und
       Uhrzeit in ihre Bestandteile. Die Zeichenkette befindet sich in dem Puffer, auf den string
       weist.  Die  Bestandteile werden in einer tm-Struktur abgelegt. Als Funktionsergebnis wird
       ein Zeiger auf diese Struktur zurückgegeben. Diese tm-Struktur wird in statischem Speicher
       bereitgestellt und somit bei weiteren Aufrufen von getdate() überschrieben.

       Im  Gegensatz  zu  strptime(3),  (die  ein  Argument  format hat), verwendet getdate() die
       Formate,  die  sie  in  der  Datei   findet,   deren   vollständiger   Pfadname   in   der
       Umgebungsvariablen  DATEMSK  angegeben  ist.  Die  erste Zeile in dieser Datei, die zu der
       angegebenen Zeichenkette passt, wird für die Umwandlung verwendet.

       Dabei wird nicht zwischen Groß- und Kleinbuchstaben unterschieden. Überflüssiger  Leerraum
       (Whitespace)  wird  ignoriert,  sowohl im Muster als auch in der Zeichenkette, die zerlegt
       werden soll.

       Die Umwandlungsspezifikationen, die in einem Muster enthalten sein dürfen, entsprechen den
       in  strptime(3)  angegebenen.  Eine  weitere  zulässige  Spezifikation ist in POSIX.1-2001
       angegeben:

       %Z     Name der Zeitzone; in Glibc nicht implementiert

       Wenn %Z angegeben wird, wird die Struktur, welche die heruntergebrochene Zeit  beherbergt,
       mit  der  aktuellen Zeit in der angegebenen Zeitzone initialisiert. Ansonsten wird sie mit
       der heruntergebrochenen Zeit der aktuellen lokalen Zeit initialisiert (durch einen  Aufruf
       von localtime(3)).

       Wenn  nur  ein  Wochentag angegeben wurde, wird er als erster solcher Tag am oder nach dem
       heutigen Tag angesehen.

       Wenn ausschließlich der Monat angegeben wird (und kein Jahr), wird der erste  gleichnamige
       Monat genommen, der dem aktuellen oder einem nachfolgenden Monat entspricht. Wenn kein Tag
       angegeben wird, wird der erste Tag des Monats angenommen.

       Wenn keine Stunde, Minute und Sekunde angegeben wird, werden die aktuelle  Stunde,  Minute
       und Sekunde verwendet.

       Wenn  kein  Datum  angegeben  wird,  jedoch  die  Stunde bekannt ist, dann wird die Stunde
       genommen, die der aktuellen oder einer späteren entspricht.

       getdate_r() ist eine GNU-Erweiterung, die  eine  ablaufinvariante  Version  von  getdate()
       bereitstellt. Anstatt eine globale Variable für Fehlerberichte und einen statischen Puffer
       zur Rückgabe der heruntergebrochenen Zeit zu nutzen, gibt sie Fehler als Funktionsergebnis
       zurück  und  verwendet  zur  Ausgabe  der  heruntergebrochenen  Zeit  den  vom Aufrufenden
       bereitgestellten Puffer, auf den res weist.

RÜCKGABEWERT

       Bei Erfolg gibt getdate() einen Zeiger zu einer struct  tm  zurück.  Ansonsten  wird  NULL
       zurückgegeben  und die globale Variable getdate_err mit einer der im Folgenden angegebenen
       Fehlernummern gesetzt. Änderungen an errno sind nicht spezifiziert.

       Bei Erfolg gibt getdate_r() 0 zurück; bei Fehlern ist der Rückgabewert eine der  folgenden
       Fehlernummern.

FEHLER

       Die   folgenden   Fehler   werden   mittels  getdate_err  (für  getdate())  oder  als  das
       Funktionsergebnis (für getdate_r()) zurückgegeben:

       1   Die Umgebungsvariable DATEMSK ist  nicht  definiert  oder  ihr  Wert  ist  eine  leere
           Zeichenkette.

       2   Die durch DATEMSK angegebene Vorlagendatei konnte nicht zum Lesen geöffnet werden.

       3   Der Dateistatus konnte nicht ermittelt werden.

       4   Die Vorlagendatei ist keine reguläre Datei.

       5   Während des Lesens der Vorlagendatei ist ein Fehler aufgetreten.

       6   Speicherzuordnung fehlgeschlagen (nicht ausreichend Speicher verfügbar)

       7   Keine Zeile in der Datei passt zur Eingabe.

       8   ungültige Beschreibung in der Eingabe

UMGEBUNGSVARIABLEN

       DATEMSK
              Datei, die Formatmuster enthält

       TZ, LC_TIME
              Variablen, die von strptime(3) verwendet werden

ATTRIBUTE

       Siehe attributes(7) für eine Erläuterung der in diesem Abschnitt verwandten Ausdrücke.

       ┌──────────────┬───────────────────────┬───────────────────────────────────┐
       │SchnittstelleAttributWert                              │
       ├──────────────┼───────────────────────┼───────────────────────────────────┤
       │getdate()     │ Multithread-Fähigkeit │ MT-Unsafe race:getdate env locale │
       ├──────────────┼───────────────────────┼───────────────────────────────────┤
       │getdate_r()   │ Multithread-Fähigkeit │ MT-Safe env locale                │
       └──────────────┴───────────────────────┴───────────────────────────────────┘

KONFORM ZU

       POSIX.1-2001, POSIX.1-2008.

ANMERKUNGEN

       Die  Beschreibung  in  POSIX.1  für  strptime(3)  enthält Beschreibungen für Umwandlungen,
       welche die Modifizierer  %E  und  %O  verwenden,  während  es  solche  Beschreibungen  für
       getdate()  nicht gibt. Die Glibc implementiert getdate() mittels strptime(3), sodass beide
       die gleichen Umwandlungen unterstützen.

BEISPIEL

       Das folgende Programm ruft getdate() für jedes seiner Befehlszeilen-Argumente auf und gibt
       für jeden Aufruf die Werte der Felder in der zurückgegebenen tm-Struktur aus. Die folgende
       Shell-Sitzung demonstriert die Nutzung des Programms:

           $ TFILE=$PWD/tfile
           $ echo '%A' > $TFILE       # vollständiger Name des Wochentags
           $ echo '%T' >> $TFILE      # ISO-Datum (YYYY-MM-DD)
           $ echo '%F' >> $TFILE      # Zeit (HH:MM:SS)
           $ date
           $ export DATEMSK=$TFILE
           $ ./a.out Tuesday '2009-12-28' '12:22:33'
           Sun Sep  7 06:03:36 CEST 2008
           Aufruf 1 ("Tuesday") erfolgreich:
               tm_sec   = 36
               tm_min   = 3
               tm_hour  = 6
               tm_mday  = 9
               tm_mon   = 8
               tm_year  = 108
               tm_wday  = 2
               tm_yday  = 252
               tm_isdst = 1
           Aufruf 2 ("2009-12-28") erfolgreich:
               tm_sec   = 36
               tm_min   = 3
               tm_hour  = 6
               tm_mday  = 28
               tm_mon   = 11
               tm_year  = 109
               tm_wday  = 1
               tm_yday  = 361
               tm_isdst = 0
           Aufruf 3 ("12:22:33") erfolgreich:
               tm_sec   = 33
               tm_min   = 22
               tm_hour  = 12
               tm_mday  = 7
               tm_mon   = 8
               tm_year  = 108
               tm_wday  = 0
               tm_yday  = 250
               tm_isdst = 1

   Programmquelltext

       #define _GNU_SOURCE
       #include <time.h>
       #include <stdio.h>
       #include <stdlib.h>

       int
       main(int argc, char *argv[])
       {
           struct tm *tmp;
           int j;

           for (j = 1; j < argc; j++) {
               tmp = getdate(argv[j]);

               if (tmp == NULL) {
                   printf("Aufruf %d fehlgeschlagen; getdate_err = %d\n",
                          j, getdate_err);
                   continue;
               }

               printf("Aufruf %d (\"%s\") erfolgreich:\n", j, argv[j]);
               printf("    tm_sec   = %d\n", tmp->tm_sec);
               printf("    tm_min   = %d\n", tmp->tm_min);
               printf("    tm_hour  = %d\n", tmp->tm_hour);
               printf("    tm_mday  = %d\n", tmp->tm_mday);
               printf("    tm_mon   = %d\n", tmp->tm_mon);
               printf("    tm_year  = %d\n", tmp->tm_year);
               printf("    tm_wday  = %d\n", tmp->tm_wday);
               printf("    tm_yday  = %d\n", tmp->tm_yday);
               printf("    tm_isdst = %d\n", tmp->tm_isdst);
           }

           exit(EXIT_SUCCESS);
       }

SIEHE AUCH

       time(2), localtime(3), setlocale(3), strftime(3), strptime(3)

KOLOPHON

       Diese Seite  ist  Teil  der  Veröffentlichung  4.15  des  Projekts  Linux-man-pages.  Eine
       Beschreibung  des  Projekts,  Informationen,  wie  Fehler gemeldet werden können sowie die
       aktuelle Version dieser Seite finden sich unter https://www.kernel.org/doc/man-pages/.

ÜBERSETZUNG

       Die   deutsche   Übersetzung   dieser   Handbuchseite    wurde    von    Martin    Schulze
       <joey@infodrom.org>,   Martin   Eberhard   Schauer   <Martin.E.Schauer@gmx.de>  und  Mario
       Blättermann <mario.blaettermann@gmail.com> erstellt.

       Diese Übersetzung ist Freie Dokumentation;  lesen  Sie  die  GNU  General  Public  License
       Version   3  oder  neuer  bezüglich  der  Copyright-Bedingungen.  Es  wird  KEINE  HAFTUNG
       übernommen.

       Wenn Sie Fehler in der Übersetzung dieser Handbuchseite finden, schicken Sie bitte eine E-
       Mail an <debian-l10n-german@lists.debian.org>.

                                        15. September 2017                             GETDATE(3)