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

时间:2011-03-18 15:28:41

标签: c++ time

我有一个功能:

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

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

2 个答案:

答案 0 :(得分: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);
}

(我还将一份副本放到了IdeOne here上。)

答案 1 :(得分:3)

asctime()总是以Www Mmm dd hh:mm:ss yyyy的格式返回。它无法改变。

如果您想使用其他格式,请查看strftime()