Provided by: manpages-de-dev_4.21.0-2_all bug

BEZEICHNUNG

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

BIBLIOTHEK

       Standard-C-Bibliothek (libc, -lc)

ÜBERSICHT

       #include <time.h>

       struct tm *getdate(const char *zeichenkette);

       extern int getdate_err;

       int getdate_r(const char *restrict zeichenkette, struct tm *restrict erg);

   Mit Glibc erforderliche Feature-Test-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
       zeichenkette   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 erg 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                               │
       └──────────────┴───────────────────────┴──────────────────────────────────────────────────┘

STANDARDS

       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.

BEISPIELE

       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      # Zeit (HH:MM:SS)
           $ echo '%F' >> $TFILE      # ISO-Datum (YYYY-MM-DD)
           $ 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 <stdio.h>
       #include <stdlib.h>
       #include <time.h>

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

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

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

               printf("Aufruf %zu (\"%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)

Ü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 ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩ 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 die Mailingliste der Übersetzer ⟨debian-l10n-german@lists.debian.org⟩.