Namespaces
Variants

wcsftime

From cppreference.net
Definiert in Header <wchar.h>
size_t wcsftime ( wchar_t * str, size_t count, const wchar_t * format, const struct tm * time ) ;
(seit C95)

Wandelt die Datums- und Zeitinformationen aus einer gegebenen Kalenderzeit time in einen nullterminierten Breitzeichen-String str gemäß der Formatzeichenkette format um. Bis zu count Bytes 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 Breitzeichen-Zeichenkette, die das Format der Konvertierung spezifiziert

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 er von der Locale nicht unterstützt wird), 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
(C99)
schreibt Newline-Zeichen
t
(C99)
schreibt horizontales Tabulatorzeichen
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) 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
(C99)
schreibt die letzten 2 Ziffern des Jahres unter Verwendung des alternativen Zahlensystems, z.B. 十一 statt 11 im ja_JP-Locale tm_year
Ey
(C99)
schreibt das Jahr als Offset vom alternativen Kalenderzeitraum des Gebietsschemas %EC (gebietsschemaabhä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 (Zeitraums) in der alternativen Darstellung des Gebietsschemas, 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 folgende Anforderungen erfüllen:

  • Enthält den 4. Januar
  • Enthält den ersten Donnerstag des Jahres
tm_year , tm_wday , tm_yday
g
(C99)
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
Ob
(C23)
schreibt den abgekürzten Monatsnamen in der alternativen Darstellung des Gebietsschemas tm_mon
h
(C99)
Synonym für b tm_mon
B schreibt den vollständigen Monatsnamen , z.B. October (lokalisierungsabhängig) tm_mon
OB
(C23)
schreibt den entsprechenden vollständigen 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. 十二 statt 12 im ja_JP-Locale 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
(C99)
schreibt die Kalenderwoche , 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 des Jahres als Dezimalzahl (Montag ist der erste Tag der Woche) (Bereich [00,53] ) tm_year , tm_wday , tm_yday
OW
(C99)
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
(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 folgende Anforderungen erfüllen:

  • Beinhaltet den 4. Januar
  • Beinhaltet den ersten Donnerstag des Jahres
tm_year , tm_wday , tm_yday
OV
(C99)
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
(C99)
schreibt den nullbasierten Tag des Monats unter Verwendung des alternativen Zahlensystems, z.B. 二十七 statt 27 im ja_JP-Locale

Einzelnen Zeichen wird ein Leerzeichen vorangestellt.

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

Einzelne Ziffern werden mit einem Leerzeichen vorangestellt.

tm_mday
Oe
(C99)
Schreibt den Tag des Monats in 1-basierter 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
(C99)
schreibt den Wochentag , wobei Sonntag als 0 gilt, unter Verwendung des alternativen Zahlensystems, z.B. 二 statt 2 im ja_JP-Locale tm_wday
u
(C99)
schreibt den Wochentag als Dezimalzahl, wobei Montag 1 entspricht (ISO 8601 Format) (Bereich [1-7] ) tm_wday
Ou
(C99)
schreibt den Wochentag , wobei Montag als 1 gilt, 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
(C99)
schreibt die Stunde im 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-Zeitformat (Bereich [01,12] ) tm_hour
OI
(C99)
schreibt Stunde aus dem 12-Stunden-Format unter Verwendung des alternativen Zahlensystems, z.B. 六 statt 06 im ja_JP-Locale tm_hour
M schreibt die Minute als Dezimalzahl (Bereich [00,59] ) tm_min
OM
(C99)
schreibt 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
(C99)
schreibt 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
(C99)
schreibt alternative Datums- und Zeitzeichenkette , z.B. Verwendung von 平成23年 (Jahr Heisei 23) anstelle von 2011年 (Jahr 2011) im ja_JP-Locale alle
x schreibt lokalisierte Datumsdarstellung (lokalabhängig) alle
Ex
(C99)
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
(C99)
schreibt alternative Zeitdarstellung (lokalisierungsabhängig) alle
D
(C99)
entspricht "%m/%d/%y" tm_mon , tm_mday , tm_year
F
(C99)
entspricht "%Y-%m-%d" (dem ISO 8601 Datumsformat) tm_mon , tm_mday , tm_year
r
(C99)
schreibt lokalisierte 12-Stunden-Uhrzeit (lokalabhängig) tm_hour , tm_min , tm_sec
R
(C99)
entspricht "%H:%M" tm_hour , tm_min
T
(C99)
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
(C99)
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 Breitzeichen-Array 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 die Inhalte sind undefiniert.

Beispiel

#include <locale.h>
#include <stdio.h>
#include <time.h>
#include <wchar.h>
int main(void)
{
    wchar_t buff[40];
    struct tm my_time =
    {
        .tm_year = 112, // = Jahr 2012
        .tm_mon = 9,    // = 10. Monat
        .tm_mday = 9,   // = 9. Tag
        .tm_hour = 8,   // = 8 Stunden
        .tm_min = 10,   // = 10 Minuten
        .tm_sec = 20    // = 20 Sekunden
    };
    if (wcsftime(buff, sizeof buff, L"%A %c", &my_time))
        printf("%ls\n", buff);
    else
        puts("wcsftime failed");
    setlocale(LC_ALL, "ja_JP.utf8");
    if (wcsftime(buff, sizeof buff, L"%A %c", &my_time))
        printf("%ls\n", buff);
    else
        puts("wcsftime failed");
}

Ausgabe:

Sunday Sun Oct  9 08:10:20 2012
日曜日 2012年10月09日 08時10分20秒

Referenzen

  • C23-Standard (ISO/IEC 9899:2024):
  • 7.29.5.1 Die wcsftime-Funktion (S: TBD)
  • C17-Standard (ISO/IEC 9899:2018):
  • 7.29.5.1 Die wcsftime-Funktion (S: 230-231)
  • C11-Standard (ISO/IEC 9899:2011):
  • 7.29.5.1 Die wcsftime-Funktion (S: 439-440)
  • C99-Standard (ISO/IEC 9899:1999):
  • 7.24.5.1 Die wcsftime-Funktion (S: 385-386)

Siehe auch

konvertiert ein tm Objekt in eine benutzerdefinierte Textdarstellung
(Funktion)
C++ Dokumentation für wcsftime