Provided by:
manpages-de-dev_0.10-1_all 
BEZEICHNUNG
getdate - Berechnet aus einer Zeichenkette eine struct tm
Diese Handbuchseite ist eventuell veraltet. Im Zweifelsfall ziehen Sie
die englischsprachige Handbuchseite zu Rate, indem Sie
man -LC 3 getdate
eingeben.
"UBERSICHT
#define _XOPEN_SOURCE
#define _XOPEN_SOURCE_EXTENDED
#include <time.h>
struct tm *getdate (const char *string);
extern int getdate_err;
#define _GNU_SOURCE
#include <time.h>
int getdate_r (const char *string, struct tm *res);
BESCHREIBUNG
Die Funktion getdate() ubersetzt die Zeichenkette, auf die string
zeigt, in eine Struktur tm, die zuruckgegeben wird. Diese tm-Struktur
kann in statischem Speicher liegen, so dass sie beim nachsten Aufruf
uberschrieben wird.
Im Gegensatz zu strptime(3), (die ein Argument format hat), verwendet
getdate() die Formate, die es in der Datei findet, dessen vollstandiger
Pfadname in der Umgebungsvariable DATEMSK angegeben ist. Die erste
Zeile in dieser Datei, die auf die angegebene Zeichenkette passt, wird
fur die Ubersetzung verwendet.
Dabei wird nicht zwischen GroB- und Kleinbuchstaben unterschieden.
Uberflussige Leerzeichen, sowohl in den Mustern in der Datei als auch
in der Zeichenkette, die konvertiert werden soll, werden ignoriert.
Die Ubersetzungs-Spezifikationen, die ein Muster enthalten darf,
entsprechen den bei strptime(3) angegebenen. Eine weitere
Spezifikation, die akzeptiert wird, ist:
%Z Name der Zeitzone
Wenn %Z verwendet wird, wird der Ruckgabewert mit der
heruntergebrochenen Zeit der aktuellen Zeit in der derzeitigen Zeitzone
initialisiert,. Ansonsten wird er mit der heruntergebrochenen Zeit der
aktuellen lokalen Zeit initialisiert.
Wenn nur ein Wochentag angegeben wurde, wird er als erster solcher Tag
nach dem heutigen Tag angesehen.
Wenn ausschlieBlich der Monat angegeben wird (und kein Jahr), wird der
erste gleichnamige Monat genommen, der dem aktuellen Monat entspricht
oder einem nachfolgenden. 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 Sekunden genommen.
Wenn kein Datum angegeben wird, jedoch die Stunde bekannt ist, dann
wird die Stunde genommen, die der aktuellen oder einer spateren
entspricht.
R"UCKGABEWERT
Wenn die Funktion erfolgreich war, gibt sie einen Zeiger zu einem
struct tm zuruck. Ansonsten wird NULL zuruckgegeben und die globale
Variable getdate_err gesetzt. Anderungen an errno sind nicht
spezifiziert. Die folgenden Werte fur getdate_err sind definiert:
1 Die Umgebungsvariable DATEMSK ist NULL oder nicht definiert.
2 Die Datei konnte nicht gelesen werden.
3 Der Dateistatus konnte nicht ermittelt werden.
4 Die Datei ist keine regulare Datei.
5 Es ist ein Lesefehler aufgetreten.
6 Es ist nicht ausreichend Speicher verfugbar.
7 Keine Zeile in der Datei passt zur Zeichenkette.
8 Ungultige Eingabe wie z.B. 31 Februar oder eine Zeit die sich nicht
als time_t dargestellen lasst (Sekunden seit 01.01.1970 00:00:00
UTC)
BEMERKUNGEN
Da getdate() nicht reentrant ist, da getdate_err verwendet sowie ein
statischer Speicherplatz als Ruckgabewert genommen wird, bietet die
glibc eine Thread-sichere Variante. Die Funktionalitat ist die
gleiche. Das Ergebnis wird ein einem Puffer zuruckgegeben, auf den res
zeigt. Im Fall eines Fehlers, ist der Ruckgabewert nicht-null mit den
gleichen Werten wie oben fur getdate_err angegeben.
Die Spezifikation POSIX 1003.1-2001 fur strptime() enthalt
Ubersetzungs-Spezifikationen, die die Modifizierer %E und %O verwenden,
wahrend solche Spezifikationen nicht fur getdate() angegeben sind. Die
Implementierung von getdate() der glibc verwendet strptime(), so dass
automatisch genau die gleiche Ubersetzung von beiden unterstutzt wird.
Die glibc-Implementierung unterstUtzt die Ubersetzungs-Spezifikation %Z
nicht.
UMGEBUNG
DATEMSK
Datei, die Format-Muster enthalt.
TZ, LC_TIME
Variablen, die von strptime() verwendet werden.
BEISPIEL
Dieses Beispiel verdeutlicht die Anwendung, es ist nicht in der
originalen Manpage enthalten.
#!/bin/sh
#
# sample script to create a file wirh possible
# date representations
#
cat >.date <<EOF
%m
%A %B %d, %Y, %H:%M:%S
%A
%B
%m/%d/%y %I %p
%d, %m, %Y %H:%M
at %A the %dst of %B in %Y
run job at %I %p, %B %dnd
&A den %d. %B %Y %H.%M Uhr
EOF
DATEMSK=.date
export DATEMSK
#include <stdio.h>
#include <time.h>
void daterr(int err)
{
switch(err) {
case 1: printf ("The DATEMSK environment variable is null or undefined.0);break;
case 2: printf ("The template file cannot be opened for reading.0);break;
case 3: printf ("Failed to get file status information.0);break;
case 4: printf ("The template file is not a regular file.0);break;
case 5: printf ("An error is encountered while reading the template file.0);break;
case 6: printf ("Memory allocation failed (not enough memory available.0);break;
case 7: printf ("There is no line in the template that matches the input.0);break;
case 8: printf ("Invalid input specification0);break;
default: printf ("unknown error0);
}
exit(1);
}
int main()
{
struct tm *tm;
char buf[512];
tm = getdate ("11/27/86");
if (getdate_err != 0) daterr (getdate_err);
strftime (buf, sizeof (buf)/sizeof (buf[0]), "%a %Y %H:%M:%S0,tm);
printf ("%s", buf);
}
KONFORM ZU
ISO 9899, POSIX 1003.1-2001
SIEHE AUCH
localtime(3), strftime(3), strptime(3), time(3).
26. Dezember 2001 GETDATE(3)