2012-06-29 112 views
0

我有一個變量:char date[11];,我需要在其中放入當前日期,例如29/06/2012在變量上獲取當前日期

所以我會做這樣的事情:

printf ("%s\n", date); 

和輸出是:29/06/2012

我只找到選項以打印字的日期,就像Fri, June 2012,但不是實際的日期數量。

那麼如何才能打印當前日期的數字?

回答

5

您可以參考該功能strftime。我會讓你想出如何既然你聲稱,你已經尋找它使用它:-)

,我會提供答案:

// first of all, you need to include time.h 
#include<time.h> 

int main() { 

    // then you'll get the raw time from the low level "time" function 
    time_t raw; 
    time(&raw); 

    // if you notice, "strftime" takes a "tm" structure. 
    // that's what we'll be doing: convert "time_t" to "tm" 
    struct tm *time_ptr; 
    time_ptr = localtime(&raw); 

    // now with the "tm", you can format it to a buffer 
    char date[11]; 
    strftime(date, 11, "%d/%m/%Y", time_ptr); 

    printf("Today is: %s\n", date); 
} 
+0

我搜索像3頁功能的谷歌,而我只是couldent找到解決辦法... – AmitM9S6

+0

我增加了更多的答案。刷新看看。 –

+1

@ AmitM9S6:你真的需要掌握一個體面的C參考手冊(我的參考資源是[C:A參考手冊](http://www.careferencemanual.com/),第5版,由Harbison&Steele提供)。不要只依靠Web;大多數在線C參考文獻(反正我見過的)的範圍從「好吧」到「不要碰駁船杆」。 –

3

您正在尋找strftime,部分的time.h。你需要通過一個struct tm *

對於你的例子,格式字符串應該是:"%d/%m/%Y",這是一個很常見的情況。

基於從文檔代碼:

char date[11]; 
time_t t; 
struct tm *tmp; 

t = time(NULL); 
tmp = localtime(&t); 
if (tmp != NULL) 
{ 
    if (strftime(date, 11, "%d/%m/%Y", tmp) != 0) 
     printf("%s\n", date); 
}