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)