2014-02-14 64 views
0
time_t t = time(0); // get time now 
struct tm * now = localtime(& t); 
char dateNow[100]; 
sprintf(dateNow, "%d%d%d", now->tm_year + 1900, now->tm_mon + 1, now->tm_mday); 
int idateNow = atoi(dateNow); 

如果日期以獲得YYYYMMDD格式的日期今天2014February14,idateNow == 2014214(YYYYMDD)。然而,所需的格式是20140214.上述代碼中的最小變化可以達到這一點。如何使用WINAPI

+1

閱讀關於'printf'格式修飾符。 – devnull

+6

'「%04d%02d%02d」' – devnull

回答

4

printf和朋友可以使用format modifiers來請求諸如前導零之類的東西。在你的情況下,格式字符串應該是"%04d%02d%02d"。在那裏的0表示你想要前導零,其他數字表示你想要的數字(最小)。

由於您將此標記爲WinAPI問題,因此我會指出還有用於格式化日期的Windows特定功能,例如GetDateFormatEx。 (不要被名稱混淆:它實際上是格式化日期而不是獲取日期格式。)GetDateFormatEx使用起來有點複雜,因爲它可以做很多事情,包括應用用戶的首選日期格式。如果您特別需要yyyymmdd格式,則可以通過提供"picture string"(如"yyyyMMdd")來覆蓋用戶的默認日期格式。

+0

謝謝阿德里安;我們非常感謝您解釋稍微隱藏的格式修飾符的耐心。美好的一天! – Martin