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);
如果今天是 2014February14,则 idateNow == 2014214(YYYYMDD)。但是要求的格式是 20140214。以上代码的最小更改可以达到此目的。
最佳答案
printf 和 friend 可以使用format modifiers请求前导零之类的东西。在您的情况下,格式字符串应为 "%04d%02d%02d"
。那里的 0
表示您想要前导零,其他数字表示您想要多少位数(最少)。
由于您将此标记为 WinAPI 问题,我将指出还有用于格式化日期的特定于 Windows 的函数,例如 GetDateFormatEx . (不要被名称混淆:它实际上是格式化日期而不是获取日期格式。)GetDateFormatEx 使用起来有点复杂,因为它可以做很多事情,包括应用用户首选的日期格式。如果您特别需要 yyyymmdd 格式,那么您可以通过提供 "picture string" 来覆盖用户的默认日期格式。像 "yyyyMMdd"
。
关于c - 如何使用 winapi 获取 YYYYMMDD 格式的日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21785269/