Namespaces
Variants

std:: wcsftime

From cppreference.net
< cpp ‎ | chrono ‎ | c
Definiert im Header <cwchar>
std:: size_t wcsftime ( wchar_t * str, std:: size_t count, const wchar_t * format, const std:: tm * time ) ;

Wandelt die Datums- und Zeitinformationen aus einer gegebenen Kalenderzeit time in eine nullterminierte Breitzeichen-Zeichenkette str gemäß der Formatzeichenkette format um. Bis zu count Breitzeichen werden geschrieben.

Inhaltsverzeichnis

Parameter

str - Zeiger auf das erste Element des wchar_t -Arrays für die Ausgabe
count - maximale Anzahl der zu schreibenden Breitzeichen
format - Zeiger auf eine nullterminierte Breitzeichenkette, die das Format der Konvertierung spezifiziert
time - Zeiger auf die zu konvertierenden Datums- und Zeitinformationen

Formatzeichenkette

Die Formatzeichenfolge besteht aus null oder mehr Konvertierungsspezifizierern und gewöhnlichen Zeichen (außer % ). Alle gewöhnlichen Zeichen, einschließlich des abschließenden Nullzeichens, werden unverändert in die Ausgabezeichenfolge kopiert. Jede Konvertierungsspezifikation beginnt mit dem % -Zeichen, optional gefolgt von einem E - oder O -Modifikator (wird ignoriert, wenn von der Locale nicht unterstützt), gefolgt von dem Zeichen, das das Verhalten der Spezifizierung bestimmt. Die folgenden Formatspezifizierer sind verfügbar:

Konvertierungsspezifizierer
Erklärung Verwendete Felder
% schreibt das Zeichen % . Die vollständige Konvertierungsspezifikation muss %% lauten.
n
(C++11)
schreibt Newline-Zeichen
t
(C++11)
schreibt horizontales Tabulatorzeichen
Jahr
Y schreibt das Jahr als Dezimalzahl, z.B. 2017 tm_year
EY
(C++11)
schreibt das Jahr in alternativer Darstellung, z.B. 平成23年 (Jahr Heisei 23) statt 2011年 (Jahr 2011) im ja_JP-Locale tm_year
y schreibt die letzten 2 Ziffern des Jahres als Dezimalzahl (Bereich [00,99] ) tm_year
Oy
(C++11)
schreibt die letzten 2 Ziffern des Jahres unter Verwendung des alternativen Zahlensystems, z.B. 十一 statt 11 im ja_JP-Locale tm_year
Ey
(C++11)
schreibt das Jahr als Offset vom alternativen Kalenderzeitraum des Gebietsschemas %EC (gebietsschemaabhängig) tm_year
C
(C++11)
schreibt die ersten 2 Ziffern des Jahres als Dezimalzahl (Bereich [00,99] ) tm_year
EC
(C++11)
schreibt den Namen des Basisjahres (Zeitraums) in der alternativen Darstellung des Gebietsschemas, z.B. 平成 (Heisei-Ära) in ja_JP tm_year
G
(C++11)
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 folgende Anforderungen erfüllen:

  • Enthält den 4. Januar
  • Enthält den ersten Donnerstag des Jahres
tm_year , tm_wday , tm_yday
g
(C++11)
schreibt die letzten 2 Ziffern des ISO 8601 wochenbasierten Jahres , d.h. des Jahres, das die angegebene Woche enthält (Bereich [00,99] ).

In ISO 8601 beginnen Wochen mit Montag und die erste Woche des Jahres muss folgende Anforderungen erfüllen:

  • Enthält den 4. Januar
  • Enthält den ersten Donnerstag des Jahres
tm_year , tm_wday , tm_yday
Monat
b schreibt abgekürzten Monatsnamen , z.B. Oct (lokalabhängig) tm_mon
h
(C++11)
Synonym für b tm_mon
B schreibt den vollständigen Monatsnamen , z.B. October (lokalisierungsabhängig) tm_mon
m schreibt den Monat als Dezimalzahl (Bereich [01,12] ) tm_mon
Om
(C++11)
schreibt den Monat unter Verwendung des alternativen numerischen Systems, z.B. 十二 statt 12 in ja_JP-Lokalisierung tm_mon
Woche
U schreibt die Kalenderwoche als Dezimalzahl (Sonntag ist der erste Tag der Woche) (Bereich [00,53] ) tm_year , tm_wday , tm_yday
OU
(C++11)
schreibt die Kalenderwoche des Jahres , wie durch %U , unter Verwendung des alternativen Zahlensystems, z.B. 五十二 statt 52 im ja_JP-Locale tm_year , tm_wday , tm_yday
W schreibt die Kalenderwoche als Dezimalzahl (Montag ist der erste Tag der Woche) (Bereich [00,53] ) tm_year , tm_wday , tm_yday
OW
(C++11)
schreibt die Kalenderwoche , wie durch %W , unter Verwendung des alternativen Zahlensystems, z.B. 五十二 statt 52 im ja_JP-Locale tm_year , tm_wday , tm_yday
V
(C++11)
schreibt die ISO 8601-Woche des Jahres (Bereich [01,53] ).

In ISO 8601 beginnen Wochen mit Montag und die erste Woche des Jahres muss folgende Anforderungen erfüllen:

  • Beinhaltet den 4. Januar
  • Beinhaltet den ersten Donnerstag des Jahres
tm_year , tm_wday , tm_yday
OV
(C++11)
schreibt die Kalenderwoche , wie durch %V , unter Verwendung des alternativen Zahlensystems, z.B. 五十二 statt 52 im 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
(C++11)
schreibt den nullbasierten Tag des Monats unter Verwendung des alternativen Zahlensystems, z.B. 二十七 statt 27 im ja_JP-Locale

Einzelnes Zeichen wird durch ein Leerzeichen vorangestellt.

tm_mday
e
(C++11)
schreibt den Tag des Monats als Dezimalzahl (Bereich [1,31] ).

Einzelne Ziffern werden mit einem Leerzeichen vorangestellt.

tm_mday
Oe
(C++11)
Schreibt den Tag des Monats in einbasierter Zählung unter Verwendung des alternativen Zahlensystems, z.B. 二十七 statt 27 im ja_JP-Locale

Einzelnen Zeichen wird ein Leerzeichen vorangestellt.

tm_mday
Wochentag
a schreibt den abgekürzten Wochentagsnamen , z.B. Fri (lokalabhängig) tm_wday
A schreibt den vollständigen Wochentagsnamen , z.B. Friday (lokalisierungsabhängig) tm_wday
w schreibt den Wochentag als Dezimalzahl, wobei Sonntag 0 ist (Bereich [0-6] ) tm_wday
Ow
(C++11)
schreibt den Wochentag , wobei Sonntag als 0 gilt, unter Verwendung des alternativen Zahlensystems, z.B. 二 statt 2 im ja_JP-Locale tm_wday
u
(C++11)
schreibt den Wochentag als Dezimalzahl, wobei Montag 1 ist (ISO 8601 Format) (Bereich [1-7] ) tm_wday
Ou
(C++11)
schreibt den Wochentag , wobei Montag als 1 dargestellt wird, unter Verwendung des alternativen Zahlensystems, z.B. 二 statt 2 im ja_JP-Locale tm_wday
Stunde, Minute, Sekunde
H schreibt die Stunde als Dezimalzahl, 24-Stunden-Format (Bereich [00-23] ) tm_hour
OH
(C++11)
schreibt die Stunde aus dem 24-Stunden-Format unter Verwendung des alternativen Zahlensystems, z.B. 十八 statt 18 im ja_JP-Locale tm_hour
I schreibt hour als Dezimalzahl, 12-Stunden-Zählung (Bereich [01,12] ) tm_hour
OI
(C++11)
schreibt Stunde aus dem 12-Stunden-Format unter Verwendung des alternativen Zahlensystems, z.B. 六 statt 06 in ja_JP-Lokalisierung tm_hour
M schreibt die Minute als Dezimalzahl (Bereich [00,59] ) tm_min
OM
(C++11)
schreibt die Minute unter Verwendung des alternativen Zahlensystems, z.B. 二十五 statt 25 im ja_JP-Locale tm_min
S schreibt die Sekunde als Dezimalzahl (Bereich [00,60] ) tm_sec
OS
(C++11)
schreibt die Sekunde unter Verwendung des alternativen Zahlensystems, z.B. 二十四 statt 24 im ja_JP-Locale tm_sec
Sonstiges
c schreibt Standard-Datum- und Zeitzeichenkette , z.B. Sun Oct 17 04:41:13 2010 (lokalabhängig) alle
Ec
(C++11)
schreibt alternative Datums- und Zeitzeichenkette , z.B. Verwendung von 平成23年 (Jahr Heisei 23) statt 2011年 (Jahr 2011) im ja_JP-Locale alle
x schreibt lokalisierte Datumsdarstellung (lokalabhängig) alle
Ex
(C++11)
schreibt alternative Datumsdarstellung , z.B. Verwendung von 平成23年 (Jahr Heisei 23) statt 2011年 (Jahr 2011) im ja_JP-Locale alle
X schreibt lokalisierte Zeitdarstellung , z.B. 18:40:20 oder 6:40:20 PM (lokalabhängig) alle
EX
(C++11)
schreibt alternative Zeitdarstellung (lokalisierungsabhängig) alle
D
(C++11)
entspricht "%m/%d/%y" tm_mon , tm_mday , tm_year
F
(C++11)
entspricht "%Y-%m-%d" (dem ISO 8601 Datumsformat) tm_mon , tm_mday , tm_year
r
(C++11)
schreibt lokalisierte 12-Stunden-Uhrzeit (lokalabhängig) tm_hour , tm_min , tm_sec
R
(C++11)
entspricht "%H:%M" tm_hour , tm_min
T
(C++11)
entspricht "%H:%M:%S" (dem ISO 8601 Zeitformat) tm_hour , tm_min , tm_sec
p schreibt lokalisiertes a.m. oder p.m. (lokalabhängig) tm_hour
z
(C++11)
schreibt den UTC-Offset 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

Anzahl der in das breite Zeichenarray geschriebenen Breitzeichen, auf das str zeigt, ohne das abschließende L ' \0 ' bei Erfolg. Wenn count erreicht wurde, bevor der gesamte String gespeichert werden konnte, wird 0 zurückgegeben und der Inhalt ist undefiniert.

Beispiel

#include <ctime>
#include <cwchar>
#include <iostream>
#include <locale>
int main()
{
    std::locale::global(std::locale("ja_JP.utf8"));
    std::time_t t = std::time(nullptr);
    wchar_t wstr[100];
    if (std::wcsftime(wstr, 100, L"%A %c", std::localtime(&t)))
        std::wcout << wstr << '\n';
}

Mögliche Ausgabe:

火曜日 2011年12月27日 17時43分13秒

Siehe auch

konvertiert ein std::tm Objekt in eine benutzerdefinierte Textdarstellung
(Funktion)
(C++11)
formatiert und gibt einen Datums-/Zeitwert gemäß dem angegebenen Format aus
(Funktions-Template)
C-Dokumentation für wcsftime