Вопрос:
Можно ли преобразовать 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);