2011-03-18 105 views
4

我有一个函数:如何更改C++中的默认本地时间格式?

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 

我想用它来记录日志文件名。

回答

5

由于@ 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。)

3

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

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

相关问题