Your Browser is not longer supported

Please use Google Chrome, Mozilla Firefox or Microsoft Edge to view the page correctly
Loading...

{{viewport.spaceProperty.prod}}

strptime - Zeichenkette in Datum und Uhrzeit umwandeln

&pagelevel(4)&pagelevel

Definition

#include <time.h>

char *strptime(const char *buf, const char *format, struct tm *tm);

strptime konvertiert unter Berücksichtigung von format die Zeichenkette, auf die *buf zeigt, in Datum- und Uhrzeit-Einzelwerte, die in der Struktur abgelegt werden, auf die *tm zeigt.

Parameter

const char *buf

Datum- und Uhrzeit-Zeichenkette, die konvertiert werden soll.

struct tm *tm

Ergebnisstruktur, in der die konvertierten Datum- und Uhrzeit-Einzelwerte abgelegt werden.
Die Struktur wird von strptime nicht mit Nullen initialisiert. Die vom Anwender vorbelegten Werte bleiben erhalten, sofern sie nicht durch Umwandlungsanweisungen oder durch implizite Berechnungen neu belegt werden.
Das Strukturelement tm_isdst wird in keinem Fall verändert.
Gegebenenfalls erfolgt implizit ein Datumsabgleich, d.h. bei unvollständigen Datumsangaben werden nicht angegebene Strukturelemente ergänzt und es wird die Plausibilität der Strukturelemente untereinander überprüft. Dies erfolgt aber nur, wenn über %U bzw. %W eine Wochennummer eingegeben wurde. In diesem Fall werden mithilfe der Jahresangabe (tm_year) und des Wochentages (tm_wday) der Tag im Jahr (tm_yday), der Tag des Monats (tm_mday) und der Monat des Jahres (tm_mon) berechnet und neu zugewiesen. Der Wochentag (tm_day) wird hierbei mit dem Wert 0 belegt, sofern er nicht explizit mit %w, %a oder %A angegeben wurde.

const char *format

Die Zeichenkette format besteht aus null, einer oder mehreren Umwandlungsanweisungen. Jede Umwandlungsanweisung besteht aus einem der folgenden Elemente:
einem oder mehreren Zwischenraumzeichen (wie in isspace() definiert)
einem gewöhnlichen Zeichen (weder % noch Zwischenraumzeichen)
oder einer Konvertierungs-Spezifikation.

Jede Konvertierungs-Spezifikation besteht aus einem %-Zeichen, gefolgt von einem Konvertierungszeichen, das die gewünschte Umwandlung angibt. Für Konvertierungs- Spezifikationen, die einen numerischen Wert erwarten, darf die zu konvertierende Zeichenkette maximal die in der Formatbeschreibung angegebene Anzahl von Ziffern enthalten. D.h. zusätzliche führende Nullen sind nicht erlaubt. Steht zwischen den Konvertierungs-Spezifikationen weder ein Zwischenraum-Zeichen noch ein nicht-alphanumerisches Zeichen, muss die Anzahl der Ziffern sogar genau mit der in der Formatbeschreibung übereinstimmen.

Folgende Konvertierungs-Zeichen werden unterstützt:

%%

wird ersetzt durch %

%a

Wochentag, wobei die Namen aus der Lokalität verwendet werden.
Es kann entweder der abgekürzte oder der ausgeschriebene Name angegeben werden

%A

gleiche Bedeutung wie %a

%b

Monat, wobei die Namen aus der Lokalität verwendet werden.
Es kann entweder der abgekürzte oder der ausgeschriebene Name angegeben werden

%B

gleiche Bedeutung wie %b

%c

Datums- und Zeitdarstellung entsprechend der Definition in der Lokalität

%C

Jahrhundert (vierstellige Jahreszahl geteilt durch 100 als ganze Zahl) (00-99)

%d

Monatstag (01-31)

%D

Datum als %m/%d/%y

%e

gleiche Bedeutung wie %d

%h

gleiche Bedeutung wie %b

%H

Stunde (00-23), 24-Stunden Darstellung

%I

Stunde (01-12), 12-Stunden Darstellung

%j

Tag des Jahres (001-366)

%m

Nummer des Monats (01-12)

%M

Minute (00-59)

%n

wird ersetzt durch ein Zwischenraum-Zeichen

%p

äquivalente Bezeichnung der Lokalität für AM oder PM

%r

Zeit im Format %I:%M:%S%p

%R

Zeit im Format %H:%M

%S

Sekunden (00-61), erlaubt Schaltsekunden

%t

wird ersetzt durch ein Zwischenraum-Zeichen

%T

Zeit im Format %H:%M:%S

%U

Nummer der Woche im Jahr (00-53). Die erste Woche beginnt mit dem ersten Sonntag des Jahres.
Alle Tage vor dem ersten Sonntag des Jahres gehören zur Woche 0.

%w

Wochentag als Zahl (0-6), Sonntag = 0

%W

Nummer der Woche im Jahr (00-53), Montag ist der erste Tag der Woche 1.
Alle Tage vor dem ersten Montag des Jahres gehören zur Woche 0.

%x

Datum in der Darstellung der Lokalität

%X

Zeit in der Darstellung der Lokalität

%y

zweistellige Jahreszahl (00-99).
Jahreszahlen zwischen 00 und 68 werden dabei als Jahre 2000 bis 2068 interpretiert,
Jahreszahlen zwischen 69 und 99 als Jahre 1969 bis 1999.

%Y

vierstellige Jahreszahl in der Form ccyy (z.B. 1966 oder 2001)

Eine Umwandlungsanweisung, die aus Zwischenraum-Zeichen besteht, wird ausgeführt, indem der Input bis zum ersten Zeichen gelesen wird, das kein Zwischenraum-Zeichen ist (dieses Zeichen bleibt ungelesen), oder bis keine Zeichen mehr vorhanden sind.

Eine Umwandlungsanweisung, die aus einem gewöhnlichen Zeichen besteht, wird ausgeführt, indem das nächste Zeichen aus dem Puffer gelesen wird. Wenn das aus dem Puffer gelesene Zeichen nicht mit dem Zeichen der Umwandlungsanweisung übereinstimmt, schlägt diese fehl und das abweichende Zeichen sowie alle weiteren Zeichen bleiben ungelesen.

Eine Folge von Umwandlungsanweisungen, die aus %n, %t, Zwischenraum-Zeichen und Kombinationen davon besteht, wird ausgeführt, indem bis zum ersten Zeichen gelesen wird, das kein Zwischenraum-Zeichen ist (dieses Zeichen bleibt ungelesen), oder bis keine Zeichen mehr vorhanden sind.

Alle anderen Konvertierungs-Spezifikationen werden ausgeführt, indem solange Zeichen eingelesen werden, bis ein zur nächsten Umwandlungsanweisung passendes Zeichen gelesen wird (dieses bleibt im Puffer) oder bis keine Zeichen mehr vorhanden sind. Die gelesenen Zeichen werden dann mit den Werten in der Lokalität verglichen, die der Konvertierungs-Spezifikation entsprechen. Wenn der passende Wert in der Lokalität gefunden wird, werden die entsprechenden Strukturelemente der tm-Struktur auf die dieser Information entsprechenden Werte gesetzt.
Groß-/Kleinschreibung wird bei der Suche ignoriert, wenn es sich um den Vergleich von Elementen wie Wochentags- und Monatsnamen handelt. Wenn kein passender Wert in der Lokalität gefunden wird, schlägt strptime() fehl und es werden keine weiteren Zeichen gelesen.

Returnwert

Zeiger auf das Zeichen hinter dem letzten gelesenen Zeichen



bei Erfolg.                                                      


NULL-Zeiger

sonst

Hinweis

Die spezielle Behandlung von Zwischenraum-Zeichen und viele „gleiche Formate“ sollen den Einsatz von identischen Format-Strings bei strftime() und strptime() erleichtern.

Siehe auch

scanf, strftime, time