如何在C++中更改默认的本地时间格式?

Nul*_*uli 5 c++ time

我有一个功能:

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

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

    return asctime (timeinfo);
}
Run Code Online (Sandbox Code Playgroud)

以下列格式返回时间:

Fri Mar 18 11:25:04 2011
Run Code Online (Sandbox Code Playgroud)

如何更改它以便以下列格式返回?

2011 03-18 11-25-04 Fri
Run Code Online (Sandbox Code Playgroud)

我想将它用于日志文件名.

raz*_*ebe 6

正如@ 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);
}
Run Code Online (Sandbox Code Playgroud)

(我也副本掉落到IdeOne 这里.)