Как преобразовать тип time_t в строку в C++?

Вопрос: Можно ли преобразовать ltm->tm_mday в строку, пожалуйста? Я пробовал это, но это не сработает! time_t now = time(0); tm *ltm = localtime(&now); String dateAjoutSysteme = ltm->tm_mday + "/" + (1 + ltm->tm_mon) + "/" + (1900 + ltm->tm_year) + " " + (1 + ltm->tm_hour) + ":" + (1 + ltm->tm_min) + ":" +

Вопрос:

Можно ли преобразовать ltm->tm_mday в строку, пожалуйста?

Я пробовал это, но это не сработает!

time_t now = time(0); tm *ltm = localtime(&now); String dateAjoutSysteme = ltm->tm_mday + «/» + (1 + ltm->tm_mon) + «/» + (1900 + ltm->tm_year) + » » + (1 + ltm->tm_hour) + «:» + (1 + ltm->tm_min) + «:» + (1 + ltm->tm_sec); Лучший ответ:

Я совсем не убежден, что это лучший способ сделать это, но он работает:

#include <time.h> #include <string> #include <sstream> #include <iostream> int main() { time_t now = time(0); tm *ltm = localtime(&now); std::stringstream date; date << ltm->tm_mday << «/» << 1 + ltm->tm_mon << «/» << 1900 + ltm->tm_year << » » << 1 + ltm->tm_hour << «:» << 1 + ltm->tm_min << «:» << 1 + ltm->tm_sec; std::cout << date.str() << «n»; }

Функция strftime() выполнит большую часть этой работы для вас, но создание частей строки с использованием строкового stringstream может быть более полезным.

Ответ №1

Вы можете преобразовать time_t либо с помощью сложного strftime, либо простых функций asctime для массива char а затем использовать соответствующий конструктор std::string. Простой пример:

std::string time_string (std::asctime (timeinfo)));

Редактировать:

В частности, для вашего кода ответ будет следующим:

std::time_t now = std::time(0); tm *ltm = std::localtime(&now); char mbstr[100]; std::strftime(mbstr, 100, «%d/%m/%Y %T», std::localtime(&t)); std::string dateAjoutSysteme (mbstr);

Оцените статью
Добавить комментарий