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 для месяца и так далее.