【问题标题】:How do I change the default local time format in C++?如何更改 C++ 中的默认本地时间格式?
【发布时间】:2011-03-18 15:28:40
【问题描述】:

我有一个函数:

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

我想用这个作为日志文件名。

【问题讨论】:

    标签: c++ time


    【解决方案1】:

    正如 @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 发送了一份副本。)

    【讨论】:

    • 谢谢!顺便说一句,我用 std::stringstream 结束了它:ssTime << std::put_time(localtime(&(attr.st_mtime)), "%Y/%m/%d-%H:%M");
    【解决方案2】:

    asctime() 始终以 Www Mmm dd hh:mm:ss yyyy 格式返回。无法更改。

    如果您想使用不同的格式,请查看strftime()

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-11-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-02
      • 1970-01-01
      • 2013-07-26
      相关资源
      最近更新 更多