2012-10-13 21 views
0

我正在研究一個程序的一個元素,它在(24小時制)小時和分鐘中獲取系統時間,並將其格式化爲HH:MM並將其存儲在數組中。分鐘也必須由1。這被遞增是我的代碼:如何在C中格式化系統時間?

strftime (timeh,10,"%H:",formtime); 
strftime (timem,10,"%M",formtime); 
timem1 = atoi(timem); 
++timem1; 
itoa(timem1, timem, 10); 
strcpy(time, timeh); 
strcat(time, timem); 

我通過簡單地具有它打印出時間測試了它,這是的printf的輸出(「%s」時,時間) : 5.(時間是上午1:04)

單獨打印時間爲小時(上午1:08),分鐘打印正確。

我能做些什麼來使陣列時間保持格式正確的HH:MM時間?

感謝您的建議

+0

緩衝區太短? – 2012-10-13 06:12:43

回答

2

如果我讀了你的問題的權利,你應該能夠做到這一點的:

formtime->tm_min++; /* Additional checks needed. */ 
strftime(time, 10, "%H:%M", formtime); 
+0

.../facedesk。謝謝,完美的作品。 – Koan

1

而不是試圖直接調整分鐘,不必擔心包裹在一小時,你應該調整了60秒的時間分割成一個結構TM進行格式化之前:

time_t now; 
time(&now); 
now += 60; 
strftime(buffer, sizeof(buffer), "%H:%M", localtime(&now)); 

注意,呼喚你的陣列time不是一個好主意,因爲這將與用於獲取當前時間的標準函數time相沖突。