Настроить формат даты в C ++ - PullRequest
2 голосов
/ 13 октября 2011

У меня есть эта функция:

void Log::Write(string logline){
//2011-10-12 13:07:40 correct format
    time_t rawtime;
    struct tm * timeinfo;
    time ( &rawtime );
    timeinfo = localtime ( &rawtime );
    m_stream.write( asctime (timeinfo), 24 );
    m_stream << " - " << logline << std::endl;
}

Вывод выглядит так:

Чт, 13 октября 12:35:30 2011

но я хочу увидеть вывод, например раздел комментариев:

2011-10-12 13: 07: 40

Как это возможно?

Ответы [ 4 ]

5 голосов
/ 13 октября 2011

Это очень возможно. Посмотрите на справочную страницу для strftime(). В этом случае вы бы хотели:

void Log::Write(string line) 
{
    time_t rawtime;
    struct tm * timeinfo;
    char buffer [80];

    time ( &rawtime );
    timeinfo = localtime ( &rawtime );

    strftime (buffer,80,"%Y-%m-%d %H:%M:%S",timeinfo);
    m_stream << buffer << " - " << line << endl;
}
1 голос
/ 13 октября 2011

Вы можете использовать функцию strftime() для форматирования времени любым удобным для вас способом.В вашем случае строка формата "%Y-%m-%d %H:%M:%S" должна дать желаемый результат.

1 голос
/ 13 октября 2011

Boost предлагает библиотеку для этого.

0 голосов
/ 13 октября 2011

Вы можете использовать strftime () для преобразования struct tm в строку с несколько гибким форматированием.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...