Ce face std::put_time
std::put_time primește un pointer la o structură std::tm (zi, lună, an, oră etc.) și un șablon cu marcaje care încep cu %: %d ziua, %m luna, %Y anul cu 4 cifre, %H ora (00-23), %M minutul, %S secunda, %A numele zilei, %B numele lunii.
Atenție la câmpurile din std::tm: tm_year înseamnă anii de la 1900 (2026 se scrie 126), iar tm_mon începe de la 0 (octombrie este 9). Data curentă se obține cu std::time și std::localtime.
Numele zilelor și lunilor sunt în engleză, dacă nu setezi o localizare. Pentru cod nou, <chrono> împreună cu std::format este o alternativă mai sigură.
Parametri
| Parametru | Descriere |
|---|---|
data |
Pointer la un std::tm completat. |
sablon |
Textul cu marcaje %, la fel ca la strftime. |
Exemple
Exemplul 1: O dată fixă în mai multe formate
#include <ctime>
#include <iomanip>
#include <iostream>
int main() {
std::tm data{};
data.tm_year = 2026 - 1900; // anii de la 1900
data.tm_mon = 10 - 1; // lunile de la 0
data.tm_mday = 19;
data.tm_hour = 14;
data.tm_min = 30;
data.tm_wday = 1; // luni (0 = duminică)
std::cout << std::put_time(&data, "%d.%m.%Y %H:%M") << '\n';
std::cout << std::put_time(&data, "%Y-%m-%d") << '\n';
std::cout << std::put_time(&data, "%A, %d %B %Y") << '\n';
}
Rezultat
19.10.2026 14:30
2026-10-19
Monday, 19 October 2026
Exemplul 2: Data și ora curentă
Rezultatul depinde de momentul rulării.
#include <ctime>
#include <iomanip>
#include <iostream>
int main() {
std::time_t acum = std::time(nullptr);
std::tm local = *std::localtime(&acum);
std::cout << "Acum este " << std::put_time(&local, "%d.%m.%Y, ora %H:%M:%S") << '\n';
}
Rezultat posibil (diferă la fiecare rulare)
Acum este 19.10.2026, ora 14:32:07
Greșeli frecvente
- Pui
tm_year = 2026șitm_mon = 10: obții anul 3926 și luna noiembrie. Anul se dă de la 1900, iar luna de la 0. std::localtimereturnează un pointer la o zonă internă care se suprascrie la apelul următor și nu este sigură între fire de execuție. Copiază rezultatul imediat, ca în exemplu.
Comenzi înrudite
std::format: Construiește un std::string dintr-un șablon cu acolade {} și valori (C++20).std::setw: Stabilește lățimea minimă a următoarei valori, cu aliniere și caracter de umplere.