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);
如果今天的日期是2014年2月14日,则idateNow == 2014214( YYYYMDD )。但是,所需格式为20140214.上述代码中的最小变化可以达到此目的。
答案 0 :(得分:4)
printf和朋友可以使用format modifiers来请求前导零等内容。在您的情况下,格式字符串应为"%04d%02d%02d"
。那里的0
表示你想要前导零,其他数字表示你想要多少位数(最小值)。
由于您将此标记为WinAPI问题,我将指出还有用于格式化日期的Windows特定函数,例如GetDateFormatEx。 (不要被名称混淆:它实际上格式化日期而不是获取日期格式。)GetDateFormatEx使用起来有点复杂,因为它可以做很多事情,包括应用用户的首选日期格式。如果您特别需要yyyymmdd格式,则可以通过提供"yyyyMMdd"
{{1}}来覆盖用户的默认日期格式。