我有一个功能:

string get_current_time()
{
    time_t rawtime;
    struct tm * timeinfo;

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

    return asctime (timeinfo);
}

它以以下格式返回时间:
Fri Mar 18 11:25:04 2011

如何更改它以便以以下格式返回?
2011 03-18 11-25-04 Fri

我想使用它作为日志文件名。

最佳答案

正如 @ 0A0D 所建议的那样,虽然您不能更改asctime,但是可以使用 strftime 格式化time_t中包含的数据:

string get_current_time()
{
    time_t rawtime;
    struct tm * timeinfo;

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

    char output[30];
    strftime(output, 30, "%Y %m-%d %H-%M-%S %a", timeinfo);

    return string(output);
}

(我还将拷贝复制到了IdeOne here上。)

09-13 01:30