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);

Beschreibung

strptime() konvertiert unter Berücksichtigung von format die Zeichenkette, auf die *buf zeigt, in Einzelwerte, die in der Struktur abgelegt werden, auf die *tm zeigt.

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

leiche Bedeutung wie %b

%c

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

%C

Jahrhundert (Jahr 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

Jahr innerhalb des Jahrhunderts (00-99)

%Y

Jahr in der Form ccyy (z.B. 1986)

Modifizierte Umwandlungsanweisungen

Einige Umwandlungsanweisungen können mit den Zeichen E und O modifiziert werden. Dadurch wird angegeben, dass ein alternatives Format bzw. eine andere Anweisung verwendet werden soll, als bei der unmodifizierten Anweisung. Wenn dieses alternative Format oder diese alternative Anweisung in der aktuellen lokalen Umgebung nicht existiert, ist das Verhalten wie bei der unmodifizierten Umwandlungsanweisung.

%Ec

alternative Darstellung der Lokalität für Datum und Zeit.

%EC

Name des Basisjahrs (Zeitraum) in der alternativen Darstellung der Lokalität.

%Ex

alternative Darstellung der Lokalität für das Datum.

%EX

alternative Darstellung der Lokalität für die Zeit.

%Ey

Offset zu %EC (nur Jahr) in der alternativen Darstellung der Lokalität.

%EY

alternative Darstellung für das Jahr.

%Od

Monatstag; Verwendung der alternativen numerischen Symbole der Lokalität; es wird mit führenden Nullen nach Bedarf aufgefüllt, wenn es ein alternatives Symbol für Null gibt, andernfalls wird mit führenden Leerzeichen aufgefüllt.

%Oe

gleiche Bedeutung wie %Od

%OH

Stunde (Angabe in 24-Stunden-Darstellung); Verwendung der alternativen numerischen Symbole der Lokalität.

%OI

Stunde (Angabe in 12-Stunden-Darstellung); Verwendung der alternativen numerischen Symbole der Lokalität.

%Om

Monat; Verwendung der alternativen numerischen Symbole der Lokalität.

%OM

Minuten; Verwendung der alternativen numerischen Symbole der Lokalität.

%OS

Sekunden; Verwendung der alternativen numerischen Symbole der Lokalität.

%OU

Nummer der Woche (Sonntag ist der erste Tag der Woche; Regeln entsprechend %U); Verwendung der alternativen numerischen Symbole der Lokalität.

%Ow

Nummer des Wochentags (Sonntag = 0); Verwendung der alternativen numerischen Symbole der Lokalität.

%OW

Nummer der Woche (Montag ist der erste Tag der Woche); Verwendung der alternativen numerischen Symbole der Lokalität.

%Oy

Jahr (Offset zu %C) in der alternativen Darstellung der Lokalität und mit den alternativen Symbolen der Lokalität.

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.


Nullzeiger

bei Fehler.                                                          

Hinweise

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

Die Struktur, auf die tm zeigt, wird zu Beginn der Ausführung 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 jedoch nur, wenn über %U, %W, %OU bzw. %OW eine Wochennummer eingegeben wurde.
In diesem Fall wird 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, %A oder %Ow angegeben wurde.

Siehe auch

scanf(), strftime(), time(), time.h.