C++:
Перетворення дати в рядок
Як це зробити:
У сучасному C++ бібліотеки <chrono>
та <iomanip>
є вашими помічниками для операцій з датою та часом. Ось швидкий метод за допомогою std::put_time
:
#include <iostream>
#include <iomanip>
#include <chrono>
#include <sstream>
int main() {
auto now = std::chrono::system_clock::now(); // Отримати поточний час
auto time = std::chrono::system_clock::to_time_t(now); // Перетворити в time_t
// Перетворити в структуру tm для форматування
std::tm tm = *std::localtime(&time);
// Рядковий потік для виводу
std::stringstream ss;
ss << std::put_time(&tm, "%Y-%m-%d %H:%M:%S"); // Формат: РРРР-ММ-ДД ГГ:ХХ:СС
std::string date_str = ss.str(); // Перетворити в рядок
std::cout << date_str << std::endl; // Вивести рядок дати
return 0;
}
Приклад виводу (залежить від поточної дати та часу):
2023-03-15 14:25:30
Поглиблений Розгляд
Перед появою <chrono>
, програмісти C++ часто мали справу з обробкою часу в стилі C через <ctime>
. Це було менш інтуїтивно зрозуміло і більш схильно до помилок через ручне управління пам’яттю та залежності від платформи.
Альтернативи до std::put_time
включають використання strftime
, але це більш у стилі C. Сторонні бібліотеки, як-от Boost.Date_Time, можуть запропонувати більше функціоналу за ціною додавання залежностей.
Ключовий момент реалізації - розуміння специфікаторів формату в std::put_time
, які схожі на ті, що використовуються в strftime
. Ви відображаєте заповнювачі на компоненти дати або часу - %Y
для повного року, %m
для місяця і так далі.