Namespaces
Variants

std:: put_time

From cppreference.net
< cpp ‎ | io ‎ | manip
Definiert im Header <iomanip>
template < class CharT >
/*unspecified*/ put_time ( const std:: tm * tmb, const CharT * fmt ) ;
(seit C++11)

Wenn in einem Ausdruck verwendet out << put_time ( tmb, fmt ) , konvertiert es die Datums- und Zeitinformationen aus einer gegebenen Kalenderzeit tmb in eine Zeichenkette gemäß dem Formatstring fmt , als ob durch Aufruf von std::strftime , std::wcsftime oder analog (abhängig von CharT ), entsprechend dem std::time_put -Facette der Locale, die aktuell in den Ausgabestream out eingebettet ist.

Inhaltsverzeichnis

Parameter

tmb - Zeiger auf die Kalenderzeit-Struktur, wie sie von std::localtime oder std::gmtime erhalten wird
fmt - Zeiger auf eine nullterminierte CharT Zeichenkette, die das Format der Konvertierung spezifiziert

Formatzeichenkette

Die Formatzeichenkette 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 Ausgabezeichenkette kopiert. Jede Konvertierungsspezifikation beginnt mit dem % -Zeichen, optional gefolgt von einem E - oder O -Modifikator (wird ignoriert, wenn vom Gebietsschema 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 (lokalisierungsabhängig) tm_mon
h
(C++11)
Synonym von b tm_mon
B schreibt den vollständigen Monatsnamen , z.B. October (lokalabhä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 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
(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

Einzelnen Zeichen wird 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 dargestellt wird, 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 der 12-Stunden-Uhr 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 eine 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

Ein Objekt eines nicht näher spezifizierten Typs, sodass

  • Wenn out ein Objekt vom Typ std:: basic_ostream < CharT, Traits > ist, dann hat der Ausdruck out << put_time ( tmb, fmt )
    • den Typ std:: basic_ostream < CharT, Traits > &
    • den Wert out
    • verhält sich, als ob f ( out, tmb, fmt ) aufgerufen würde

wobei die Funktion f definiert ist als:

template<class CharT, class Traits>
void f(std::basic_ios<CharT, Traits>& str, const std::tm* tmb, const CharT* fmt)
{
    using Iter = std::ostreambuf_iterator<CharT, Traits>;
    using TimePut = std::time_put<CharT, Iter>;
    const TimePut& tp = std::use_facet<TimePut>(str.getloc());
    const Iter end = tp.put(Iter(str.rdbuf()), str, str.fill(), tmb,
        fmt, fmt + Traits::length(fmt));
    if (end.failed())
        str.setstate(std::ios_base::badbit);
}
**Anmerkung:** Der gesamte Code innerhalb der `
` und `` Tags wurde gemäß den Anweisungen nicht übersetzt, da es sich um C++-Code handelt. Die HTML-Struktur, Attribute und C++-spezifischen Begriffe wurden beibehalten.

Beispiel

#include <ctime>
#include <iomanip>
#include <iostream>
int main()
{
    std::time_t t = std::time(nullptr);
    std::tm tm = *std::localtime(&t);
    std::cout.imbue(std::locale("ru_RU.utf8"));
    std::cout << "ru_RU: " << std::put_time(&tm, "%c %Z") << '\n';
    std::cout.imbue(std::locale("ja_JP.utf8"));
    std::cout << "ja_JP: " << std::put_time(&tm, "%c %Z") << '\n';
}

Mögliche Ausgabe:

ru_RU: Ср. 28 дек. 2011 10:21:16 EST
ja_JP: 2011年12月28日 10時21分16秒 EST

Siehe auch

formatiert Inhalte von std::tm zur Ausgabe als Zeichensequenz
(Klassentemplate)
(C++11)
analysiert einen Datums-/Zeitwert mit spezifiziertem Format
(Funktionstemplate)
konvertiert ein std::tm Objekt in eine benutzerdefinierte Textdarstellung
(Funktion)
konvertiert ein std::tm Objekt in eine benutzerdefinierte Breitzeichen-Textdarstellung
(Funktion)