strftime
| Definiert in Header <time.h> |
||
| (bis C99) | ||
| (seit C99) | ||
Konvertiert die Datums- und Zeitinformationen aus einer gegebenen Kalenderzeit tp in eine nullterminierte Multibyte-Zeichenkette str gemäß der Formatzeichenkette format. Bis zu count Bytes werden geschrieben.
Inhalt |
[bearbeiten] Parameter
| str | - | Zeiger auf das erste Element des Zeichenarrays für die Ausgabe |
| zählt | - | maximale Anzahl von zu schreibenden Bytes |
| format | - | Zeiger auf eine nullterminierte Multibyte-Zeichenkette, die das Format der Konvertierung angibt |
| tp | - | Zeiger auf ein struct tm-Objekt, das die zu formatierende Zeit angibt |
[bearbeiten] Formatzeichenkette
Die Formatzeichenkette besteht aus null oder mehr Konversionsspezifizierern und gewöhnlichen Zeichen (außer %). Alle gewöhnlichen Zeichen, einschließlich des terminierenden Nullzeichens, werden unverändert in den Ausgabestring kopiert. Jede Konversionsspezifikation beginnt mit einem %-Zeichen, optional gefolgt von einem E- oder O-Modifikator (ignoriert, wenn von der Locale nicht unterstützt), gefolgt von dem Zeichen, das das Verhalten des Spezifizierers bestimmt. Die folgenden Format-Spezifizierer sind verfügbar
| Konversion Spezifizierer |
Erklärung | Verwendete Felder |
|---|---|---|
%
|
schreibt ein wörtliches %. Die vollständige Konversionsspezifikation muss %% sein. |
|
n(C99) |
schreibt ein Zeilenumbruchzeichen | |
t(C99) |
schreibt ein horizontalen Tabulator | |
| Jahr | ||
Y
|
schreibt das Jahr als Dezimalzahl, z.B. 2017 | tm_year
|
EY(C99) |
schreibt das Jahr in der alternativen Darstellung, z.B. 平成23年 (Jahr Heisei 23) anstelle von 2011年 (Jahr 2011) in der ja_JP-Locale | tm_year
|
y
|
schreibt die letzten 2 Ziffern des Jahres als Dezimalzahl (Bereich [00,99]) |
tm_year
|
Oy(C99) |
schreibt die letzten 2 Ziffern des Jahres unter Verwendung des alternativen Zahlensystems, z.B. 十一 anstelle von 11 in der ja_JP-Locale | tm_year
|
Ey(C99) |
schreibt das Jahr als Offset von der alternativen Kalenderperiode der Locale %EC (Locale-abhängig) |
tm_year
|
C(C99) |
schreibt die ersten 2 Ziffern des Jahres als Dezimalzahl (Bereich [00,99]) |
tm_year
|
EC(C99) |
schreibt den Namen des Basisjahres (Periode) in der alternativen Darstellung der Locale, z.B. 平成 (Heisei-Ära) in ja_JP | tm_year
|
G(C99) |
schreibt das ISO 8601 wochenbasierte Jahr, d.h. das Jahr, das die angegebene Woche enthält. In ISO 8601 beginnen Wochen mit Montag, und die erste Woche des Jahres muss die folgenden Anforderungen erfüllen:
|
tm_year, tm_wday, tm_yday |
g(C99) |
schreibt die letzten 2 Ziffern des ISO 8601 wochenbasierten Jahres, d.h. das Jahr, das die angegebene Woche enthält (Bereich [00,99]).In ISO 8601 beginnen Wochen mit Montag, und die erste Woche des Jahres muss die folgenden Anforderungen erfüllen:
|
tm_year, tm_wday, tm_yday |
| Monat | ||
b
|
schreibt den verkürzten Monatsnamen, z.B. Okt (Locale-abhängig) |
tm_mon
|
Ob(C23) |
schreibt den **abgekürzten Monatsnamen** in der alternativen Darstellung des Gebietsschemas | tm_mon
|
h(C99) |
Synonym von b |
tm_mon
|
B
|
schreibt den vollständigen Monatsnamen, z.B. Oktober (Locale-abhängig) |
tm_mon
|
OB(C23) |
schreibt den entsprechenden **vollen Monatsnamen** in der alternativen Darstellung des Gebietsschemas | tm_mon
|
m
|
schreibt den Monat als Dezimalzahl (Bereich [01,12]) |
tm_mon
|
Om(C99) |
schreibt den Monat unter Verwendung des alternativen Zahlensystems, z.B. 十二 anstelle von 12 in der ja_JP-Locale | tm_mon
|
| Week | ||
U
|
schreibt die Woche des Jahres als Dezimalzahl (Sonntag ist der erste Tag der Woche) (Bereich [00,53]) |
tm_year, tm_wday, tm_yday |
OU(C99) |
schreibt die Woche des Jahres, wie bei %U, unter Verwendung des alternativen Zahlensystems, z.B. 五十二 anstelle von 52 in der ja_JP-Locale |
tm_year, tm_wday, tm_yday |
W
|
schreibt die Woche des Jahres als Dezimalzahl (Montag ist der erste Tag der Woche) (Bereich [00,53]) |
tm_year, tm_wday, tm_yday |
OW(C99) |
schreibt die Woche des Jahres, wie bei %W, unter Verwendung des alternativen Zahlensystems, z.B. 五十二 anstelle von 52 in der ja_JP-Locale |
tm_year, tm_wday, tm_yday |
V(C99) |
schreibt die ISO 8601 Woche des Jahres (Bereich [01,53]).In ISO 8601 beginnen Wochen mit Montag, und die erste Woche des Jahres muss die folgenden Anforderungen erfüllen:
|
tm_year, tm_wday, tm_yday |
OV(C99) |
schreibt die Woche des Jahres, wie bei %V, unter Verwendung des alternativen Zahlensystems, z.B. 五十二 anstelle von 52 in der ja_JP-Locale |
tm_year, tm_wday, tm_yday |
| Tag des Jahres/Monats | ||
j
|
schreibt den Tag des Jahres als Dezimalzahl (Bereich [001,366]) |
tm_yday
|
d
|
schreibt den Tag des Monats als Dezimalzahl (Bereich [01,31]) |
tm_mday
|
Od(C99) |
schreibt den nullbasierten Tag des Monats unter Verwendung des alternativen Zahlensystems, z.B. 二十七 anstelle von 27 in der ja_JP-Locale Ein einzelnes Zeichen wird von einem Leerzeichen gefolgt. |
tm_mday
|
e(C99) |
schreibt den Tag des Monats als Dezimalzahl (Bereich [1,31]).Eine einzelne Ziffer wird von einem Leerzeichen gefolgt. |
tm_mday
|
Oe(C99) |
schreibt den einsbasierten Tag des Monats unter Verwendung des alternativen Zahlensystems, z.B. 二十七 anstelle von 27 in der ja_JP-Locale Ein einzelnes Zeichen wird von einem Leerzeichen gefolgt. |
tm_mday
|
| Wochentag | ||
a
|
schreibt den verkürzten Wochentagsnamen, z.B. Fr (Locale-abhängig) |
tm_wday
|
A
|
schreibt den vollständigen Wochentagsnamen, z.B. Freitag (Locale-abhängig) |
tm_wday
|
w
|
schreibt den Wochentag als Dezimalzahl, wobei Sonntag 0 ist (Bereich [0-6]) |
tm_wday
|
Ow(C99) |
schreibt den Wochentag, wobei Sonntag 0 ist, unter Verwendung des alternativen Zahlensystems, z.B. 二 anstelle von 2 in der ja_JP-Locale |
tm_wday
|
u(C99) |
schreibt den Wochentag als Dezimalzahl, wobei Montag 1 ist (ISO 8601-Format) (Bereich [1-7]) |
tm_wday
|
Ou(C99) |
schreibt den Wochentag, wobei Montag 1 ist, unter Verwendung des alternativen Zahlensystems, z.B. 二 anstelle von 2 in der ja_JP-Locale |
tm_wday
|
| Stunde, Minute, Sekunde | ||
H
|
schreibt die Stunde als Dezimalzahl, 24-Stunden-Uhr (Bereich [00-23]) |
tm_hour
|
OH(C99) |
schreibt die Stunde der 24-Stunden-Uhr unter Verwendung des alternativen Zahlensystems, z.B. 十八 anstelle von 18 in der ja_JP-Locale | tm_hour
|
I
|
schreibt die Stunde als Dezimalzahl, 12-Stunden-Uhr (Bereich [01,12]) |
tm_hour
|
OI(C99) |
schreibt die Stunde der 12-Stunden-Uhr unter Verwendung des alternativen Zahlensystems, z.B. 六 anstelle von 06 in der ja_JP-Locale | tm_hour
|
M
|
schreibt die Minute als Dezimalzahl (Bereich [00,59]) |
tm_min
|
OM(C99) |
schreibt die Minute unter Verwendung des alternativen Zahlensystems, z.B. 二十五 anstelle von 25 in der ja_JP-Locale | tm_min
|
S
|
schreibt die Sekunde als Dezimalzahl (Bereich [00,60]) |
tm_sec
|
OS(C99) |
schreibt die Sekunde unter Verwendung des alternativen Zahlensystems, z.B. 二十四 anstelle von 24 in der ja_JP-Locale | tm_sec
|
| Sonstiges | ||
c
|
schreibt die Standard-Datums- und Zeitzeichenkette, z.B. So Okt 17 04:41:13 2010 (Locale-abhängig) |
all |
Ec(C99) |
schreibt die alternative Datums- und Zeitzeichenkette, z.B. unter Verwendung von 平成23年 (Jahr Heisei 23) anstelle von 2011年 (Jahr 2011) in der ja_JP-Locale | all |
x
|
schreibt die lokalisierte Datumsdarstellung (Locale-abhängig) | all |
Ex(C99) |
schreibt die alternative Datumsdarstellung, z.B. unter Verwendung von 平成23年 (Jahr Heisei 23) anstelle von 2011年 (Jahr 2011) in der ja_JP-Locale | all |
X
|
schreibt die lokalisierte Zeitdarstellung, z.B. 18:40:20 oder 6:40:20 PM (Locale-abhängig) | all |
EX(C99) |
schreibt die alternative Zeitdarstellung (Locale-abhängig) | all |
D(C99) |
entspricht "%m/%d/%y" | tm_mon, tm_mday, tm_year |
F(C99) |
entspricht "%Y-%m-%d" (das ISO 8601 Datumsformat) | tm_mon, tm_mday, tm_year |
r(C99) |
schreibt die lokalisierte 12-Stunden-Uhrzeit (Locale-abhängig) | tm_hour, tm_min, tm_sec |
R(C99) |
entspricht "%H:%M" | tm_hour, tm_min |
T(C99) |
entspricht "%H:%M:%S" (das ISO 8601 Zeitformat) | tm_hour, tm_min, tm_sec |
p
|
schreibt die lokalisierte vormittags- oder nachmittagsangabe (Locale-abhängig) | tm_hour
|
z(C99) |
schreibt den Offset von UTC im ISO 8601-Format (z.B. -0430) oder keine Zeichen, wenn die Zeitzoneninformation nicht verfügbar ist |
tm_isdst
|
Z
|
schreibt den Locale-abhängigen Zeitzonennamen oder die Abkürzung, oder keine Zeichen, wenn die Zeitzoneninformation nicht verfügbar ist | tm_isdst
|
[bearbeiten] Rückgabewert
Die Anzahl der in das von str zeigende Zeichenarray geschriebenen Bytes, ohne das abschließende '\0' im Erfolgsfall. Wenn count erreicht wurde, bevor die gesamte Zeichenkette gespeichert werden konnte, wird 0 zurückgegeben und der Inhalt ist undefiniert.
[bearbeiten] Beispiel
#include <locale.h> #include <stdio.h> #include <time.h> int main(void) { char buff[70]; struct tm my_time = { .tm_year=112, // = year 2012 .tm_mon=9, // = 10th month .tm_mday=9, // = 9th day .tm_hour=8, // = 8 hours .tm_min=10, // = 10 minutes .tm_sec=20 // = 20 secs }; if (strftime(buff, sizeof buff, "%A %c", &my_time)) puts(buff); else puts("strftime failed"); setlocale(LC_TIME, "el_GR.utf8"); if (strftime(buff, sizeof buff, "%A %c", &my_time)) puts(buff); else puts("strftime failed"); }
Mögliche Ausgabe
Sunday Sun Oct 9 08:10:20 2012 Κυριακή Κυρ 09 Οκτ 2012 08:10:20 πμ EST
[bearbeiten] Referenzen
- C23-Standard (ISO/IEC 9899:2024)
- 7.27.3.5 Die Funktion strftime (S: TBD)
- C17-Standard (ISO/IEC 9899:2018)
- 7.27.3.5 Die Funktion strftime (S: 288-291)
- C11-Standard (ISO/IEC 9899:2011)
- 7.27.3.5 Die Funktion strftime (S: 394-397)
- C99-Standard (ISO/IEC 9899:1999)
- 7.23.3.5 Die Funktion strftime (S: 343-347)
- C89/C90-Standard (ISO/IEC 9899:1990)
- 4.12.3.5 Die Funktion strftime
[bearbeiten] Siehe auch
| (in C23 veraltet)(C11) |
konvertiert ein tm-Objekt in eine Textdarstellung (Funktion) |
| (in C23 veraltet)(C11) |
konvertiert ein time_t-Objekt in eine Textdarstellung (Funktion) |
| (C95) |
konvertiert ein tm-Objekt in eine benutzerdefinierte breite Zeichenketten-Textdarstellung (Funktion) |
| C++-Dokumentation für strftime
| |