Provided by: manpages-de-dev_1.11-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 || _XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED
       getdate_r():
           _GNU_SOURCE

BESCHREIBUNG

       Die  Funktion  getdate()  zerlegt eine als Zeichenkette gegebene Darstellung eines Zeitpunktes (inklusive
       Datum) in ihre Bestandteile. Die Zeichenkette befindet sich in einem Puffer, auf den  string  weist.  Die
       Bestandteile werden in einer tm-Struktur abgelegt und ein Zeiger auf diese Struktur als Funktionsergebnis
       zurückgegeben.  Diese  tm-Struktur wird in statischem Speicher bereitgestellt und wird 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  ein  Muster  enthalten  darf,  entsprechen  den  bei   strptime(3)
       angegebenen. Eine weitere Spezifikation, die akzeptiert wird, ist:

       %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.

       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.04  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 http://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>.

                                                 8. August 2015                                       GETDATE(3)