2011-03-18 36 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()

相關問題