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

0

Можно ли преобразовать 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);
  • 0
    Проверьте strftime() . Не уверен, что есть более удобный способ C ++.
  • 4
    C ++ 11: std::stringstream buf; buf << std::put_time(ltm, "%d/%m/%I:%M:%S); std::string date = buf.str()
Теги:
string
ctime

2 ответа

1
Лучший ответ

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

#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 может быть более полезным.

  • 0
    Хорошо, спасибо, тогда как я могу преобразовать date в str :: string?
  • 0
    @ user3264174, посмотри в ответ.
Показать ещё 1 комментарий
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);
  • 0
    Можете ли вы, пожалуйста, просто выполнить мой пример. Потому что я не мог понять, что ты сказал: /
  • 0
    Вы имеете в виду std::asctime а не asctime ?
Показать ещё 5 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню