other versions
- jessie 1.8-1
- stretch 1.22-1
- testing 2.6-1
- stretch-backports 2.6-1~bpo9+1
- unstable 2.6-1
GETDATE(3) | Linux-Programmierhandbuch | GETDATE(3) |
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
_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
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¶
Multithreading (siehe pthreads(7))¶
Die Funktion getdate() ist nicht multithread-fähig. Die Funktion getdate_r() ist multithread-fähig.KONFORM ZU¶
POSIX.1-2001.ANMERKUNGEN¶
Die Beschreibung in POSIX.1-2001 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 3.74 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>.13. Juni 2014 |