用C ++自定义日期格式

时间:2011-10-13 11:04:45

标签: c++ datetime date format

我有这个功能:

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;
}

输出如下:

  

Thu Oct 13 12:35:30 2011

但是我想看看评论部分的输出:

  

2011-10-12 13:07:40

怎么可能?

4 个答案:

答案 0 :(得分:5)

这很有可能。查看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 :(得分:1)

Boost为此提供library

答案 2 :(得分:1)

您可以使用strftime()功能以您想要的所有方式设置时间格式。在您的情况下,格式字符串"%Y-%m-%d %H:%M:%S"应该产生所需的结果。

答案 3 :(得分:0)

您可以使用strftime()将struct tm转换为具有稍微灵活格式的字符串。