c - 如何使用 winapi 获取 YYYYMMDD 格式的日期

标签 c winapi

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/

相关文章:

c++ - 加载 DLL 函数的更好方法?

c++ - 确定 Windows 线程是否位于关键部分或类似区域?

c - 系统异常处理: try to get the string message with arguments

c++ - 如何按条件打印位图?

c - 如何使用fscanf从忽略标点的输入文件中读取单词?

c - 使用 realloc 填充内存

c - 对函数内的结构数组进行排序

winapi - 在不释放内存页面的情况下释放 Windows 堆

c# - Windows Shell Automation InvokeVerb 基于数字而不是命令字符串

c - 动态内存和指针参数