strftime
| Definiert im Header <time.h>
|
||
size_t strftime( char* str, size_t count,
const char* format, const struct tm* tp );
|
(bis C99) | |
size_t strftime( char* restrict str, size_t count,
const char* restrict format, const struct tm* restrict tp );
|
(seit C99) | |
Konvertiert die Datums- und Zeitinformationen aus einer gegebenen Kalenderzeit tp in eine nullterminierte Multibyte-Zeichenkette str gemäß Formatstring format. Es werden bis zu count Bytes geschrieben.
Parameter
| str | - | Zeiger auf das erste Element des char-Arrays für die Ausgabe |
| count | - | maximale Anzahl zu schreibender Bytes |
| format | - | Zeiger auf eine nullterminierte Multibyte-Zeichenkette, die das Format der Konvertierung |
| angibt | tp | -
struct tmZeiger auf ein |
-Objekt, das die zu formatierende Zeit angibt
Formatstring%Der Formatstring besteht aus null oder mehr Konvertierungsspezifizierern und gewöhnlichen Zeichen (außer %). Alle gewöhnlichen Zeichen, einschließlich des terminierenden Nullzeichens, werden ohne Änderung in die Ausgabezeichenkette kopiert. Jede Konvertierungsspezifikation beginnt mit einem E-Zeichen, optional gefolgt von einem O- oder
| -Modifikator (ignoriert, falls vom Gebietsschema nicht unterstützt), gefolgt von dem Zeichen, das das Verhalten des Spezifizierers bestimmt. Die folgenden Formatspezifizierer sind verfügbar:
Konvertierungs |
spezifizierer | Erklärung |
|---|---|---|
%
|
Verwendete Felder
%schreibt literales %%. Die vollständige Konvertierungsspezifikation muss |
|
nsein. |
(C99) | |
tschreibt Zeilenumbruchzeichen |
(C99) | |
| schreibt horizontales Tabulatorzeichen | ||
Y
|
Jahr schreibt Jahr | tm_year
|
EYals Dezimalzahl, z.B. 2017 |
(C99)schreibt Jahr | tm_year
|
y
|
in der alternativen Darstellung, z.B. 平成23年 (Jahr Heisei 23) statt 2011年 (Jahr 2011) im ja_JP-Gebietsschema
schreibt die letzten 2 Ziffern von Jahr[00,99] als Dezimalzahl (Bereich |
tm_year
|
Oy) |
(C99)schreibt die letzten 2 Ziffern von Jahr | tm_year
|
Eyim alternativen Zahlensystem, z.B. 十一 statt 11 im ja_JP-Gebietsschema |
(C99)schreibt Jahr%EC als Offset von der alternativen Kalenderperiode des Gebietsschemas |
tm_year
|
C(gebietsschemaabhängig) |
(C99)schreibt die ersten 2 Ziffern von Jahr[00,99] als Dezimalzahl (Bereich |
tm_year
|
EC) |
(C99)schreibt den Namen des Basisjahres (Periode) | tm_year
|
Gin der alternativen Darstellung des Gebietsschemas, z.B. 平成 (Heisei-Ära) im ja_JP |
(C99)schreibt das ISO-8601-Wochen-jahr , d.h. das Jahr, das die angegebene Woche enthält.
|
tm_yearEnthält den ersten Donnerstag des Jahrestm_wday, tm_yday
|
g, |
(C99)schreibt die letzten 2 Ziffern des ISO-8601-Wochen-jahres[00,99], d.h. des Jahres, das die angegebene Woche enthält (Bereich ).
|
tm_yearEnthält den ersten Donnerstag des Jahrestm_wday, tm_yday
|
| Monat | ||
b
|
schreibt den abgekürzten Monatsnamen, z.B. Oct (gebietsschemaabhä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. October (gebietsschemaabhängig)
|
tm_mon
|
OB(C23) |
schreibt den entsprechenden vollständigen Monatsnamen in der alternativen Darstellung des Gebietsschemas | tm_mon
|
m
|
schreibt Monat als Dezimalzahl (Bereich [01,12])
|
tm_mon
|
Om(C99) |
schreibt Monat im alternativen Zahlensystem, z.B. 十二 statt 12 im ja_JP-Gebietsschema | tm_mon
|
| Woche | ||
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 durch %U, im alternativen Zahlensystem, z.B. 五十二 statt 52 im ja_JP-Gebietsschema
|
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 durch %W, im alternativen Zahlensystem, z.B. 五十二 statt 52 im ja_JP-Gebietsschema
|
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 durch %V, im alternativen Zahlensystem, z.B. 五十二 statt 52 im ja_JP-Gebietsschema
|
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 im alternativen Zahlensystem, z.B. 二十七 statt 27 im ja_JP-Gebietsschema
Einzelnen Zeichen wird ein Leerzeichen vorangestellt. |
tm_mday
|
e(C99) |
schreibt den Tag des Monats als Dezimalzahl (Bereich [1,31]).
Einer einstelligen Zahl wird ein Leerzeichen vorangestellt. |
tm_mday
|
Oe(C99) |
schreibt den einsbasierten Tag des Monats im alternativen Zahlensystem, z.B. 二十七 statt 27 im ja_JP-Gebietsschema
Einzelnen Zeichen wird ein Leerzeichen vorangestellt. |
tm_mday
|
| Wochentag | ||
a
|
schreibt den abgekürzten Wochentagsnamen, z.B. Fri (gebietsschemaabhängig)
|
tm_wday
|
A
|
schreibt den vollständigen Wochentagsnamen, z.B. Friday (gebietsschemaabhä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, im alternativen Zahlensystem, z.B. 二 statt 2 im ja_JP-Gebietsschema
|
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, im alternativen Zahlensystem, z.B. 二 statt 2 im ja_JP-Gebietsschema
|
tm_wday
|
| Stunde, Minute, Sekunde | ||
H
|
schreibt die Stunde als Dezimalzahl, 24-Stunden-Zählung (Bereich [00-23])
|
tm_hour
|
OH(C99) |
schreibt die Stunde der 24-Stunden-Zählung im alternativen Zahlensystem, z.B. 十八 statt 18 im ja_JP-Gebietsschema | tm_hour
|
I
|
schreibt die Stunde als Dezimalzahl, 12-Stunden-Zählung (Bereich [01,12])
|
tm_hour
|
OI(C99) |
schreibt die Stunde der 12-Stunden-Zählung im alternativen Zahlensystem, z.B. 六 statt 06 im ja_JP-Gebietsschema | tm_hour
|
M
|
schreibt die Minute als Dezimalzahl (Bereich [00,59])
|
tm_min
|
OM(C99) |
schreibt die Minute im alternativen Zahlensystem, z.B. 二十五 statt 25 im ja_JP-Gebietsschema | tm_min
|
S
|
schreibt die Sekunde als Dezimalzahl (Bereich [00,60])
|
tm_sec
|
OS(C99) |
schreibt die Sekunde im alternativen Zahlensystem, z.B. 二十四 statt 24 im ja_JP-Gebietsschema | tm_sec
|
| Andere | ||
c
|
schreibt die Standard-Datums- und Zeitzeichenkette, z.B. Sun Oct 17 04:41:13 2010 (gebietsschemaabhängig)
|
alle |
Ec(C99) |
schreibt die alternative Datums- und Zeitzeichenkette, z.B. unter Verwendung von 平成23年 (Jahr Heisei 23) statt 2011年 (Jahr 2011) im ja_JP-Gebietsschema | alle |
x
|
schreibt die lokalisierte Datumsdarstellung (gebietsschemaabhängig) | alle |
Ex(C99) |
schreibt die alternative Datumsdarstellung, z.B. unter Verwendung von 平成23年 (Jahr Heisei 23) statt 2011年 (Jahr 2011) im ja_JP-Gebietsschema | alle |
X
|
schreibt die lokalisierte Zeitdarstellung, z.B. 18:40:20 oder 6:40:20 nachm. (gebietsschemaabhängig) | alle |
EX(C99) |
schreibt die alternative Zeitdarstellung (gebietsschemaabhängig) | alle |
D(C99) |
äquivalent zu "%m/%d/%y" | tm_mon, tm_mday, tm_year
|
F(C99) |
äquivalent zu "%Y-%m-%d" (dem ISO-8601-Datumsformat) | tm_mon, tm_mday, tm_year
|
r(C99) |
schreibt die lokalisierte 12-Stunden-Zeit (gebietsschemaabhängig) | tm_hour, tm_min, tm_sec
|
R(C99) |
äquivalent zu "%H:%M" | tm_hour, tm_min
|
T(C99) |
äquivalent zu "%H:%M:%S" (dem ISO-8601-Zeitformat) | tm_hour, tm_min, tm_sec
|
p
|
schreibt die lokalisierte Vormittag- oder Nachmittag-Bezeichnung (gebietsschemaabhängig) | tm_hour
|
z(C99) |
schreibt die Abweichung von UTC im ISO-8601-Format (z.B. -0430), oder keine Zeichen, wenn die Zeitzoneninformation nicht verfügbar ist
|
tm_isdst
|
Z
|
schreibt den gebietsschemaabhängigen Zeitzonennamen oder die Abkürzung, oder keine Zeichen, wenn die Zeitzoneninformation nicht verfügbar ist | tm_isdst
|
Rückgabewert
Die Anzahl der Bytes, die in das durch str bezeichnete Zeichenarray geschrieben wurden, ohne das terminierende '\0' bei Erfolg. Wenn count erreicht wurde, bevor die gesamte Zeichenkette gespeichert werden konnte, wird 0 zurückgegeben und der Inhalt ist unbestimmt.
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
Referenzen
- C23-Standard (ISO/IEC 9899:2024):
- 7.27.3.5 Die strftime-Funktion (S.: TBD)
- C17-Standard (ISO/IEC 9899:2018):
- 7.27.3.5 Die strftime-Funktion (S.: 288-291)
- C11-Standard (ISO/IEC 9899:2011):
- 7.27.3.5 Die strftime-Funktion (S.: 394-397)
- C99-Standard (ISO/IEC 9899:1999):
- 7.23.3.5 Die strftime-Funktion (S.: 343-347)
- C89/C90-Standard (ISO/IEC 9899:1990):
- 4.12.3.5 Die strftime-Funktion
Siehe auch
(veraltet in C23)(C11) |
konvertiert ein tm-Objekt in eine textuelle Darstellung (Funktion) |
(veraltet in C23)(C11) |
konvertiert ein time_t-Objekt in eine textuelle Darstellung (Funktion) |
(C95) |
konvertiert ein tm-Objekt in eine benutzerdefinierte Breitzeichen-Textdarstellung (Funktion) |
C++-Dokumentation für strftime
| |