C语言标准宏定义__DATE__格式化转换成YY/MM/DD
时间: 2023-08-30 09:05:27 浏览: 219
由于__DATE__宏定义的格式为"MMM DD YYYY",其中MMM为英文缩写的月份,无法直接转换成YY/MM/DD的格式,需要进行一些处理。
以下是一个示例代码,将__DATE__宏定义转换成YY/MM/DD的格式:
```c
#include <stdio.h>
#include <string.h>
int main()
{
char date[] = __DATE__;
char month[4];
int day, year;
sscanf(date, "%s %d %d", month, &day, &year);
char yy[3];
strncpy(yy, (char*)&year + 2, 2);
yy[2] = '\0';
char mm[3];
if (strncmp(month, "Jan", 3) == 0) { strcpy(mm, "01"); }
else if (strncmp(month, "Feb", 3) == 0) { strcpy(mm, "02"); }
else if (strncmp(month, "Mar", 3) == 0) { strcpy(mm, "03"); }
else if (strncmp(month, "Apr", 3) == 0) { strcpy(mm, "04"); }
else if (strncmp(month, "May", 3) == 0) { strcpy(mm, "05"); }
else if (strncmp(month, "Jun", 3) == 0) { strcpy(mm, "06"); }
else if (strncmp(month, "Jul", 3) == 0) { strcpy(mm, "07"); }
else if (strncmp(month, "Aug", 3) == 0) { strcpy(mm, "08"); }
else if (strncmp(month, "Sep", 3) == 0) { strcpy(mm, "09"); }
else if (strncmp(month, "Oct", 3) == 0) { strcpy(mm, "10"); }
else if (strncmp(month, "Nov", 3) == 0) { strcpy(mm, "11"); }
else if (strncmp(month, "Dec", 3) == 0) { strcpy(mm, "12"); }
printf("%s/%s/%02d\n", yy, mm, day);
return 0;
}
```
输出结果:
```
21/08/04
```
该代码首先使用sscanf函数将__DATE__宏定义拆分成月、日、年三个部分。然后使用strncpy函数将年份的后两位拷贝到一个新的字符串中。接着使用条件语句判断月份的英文缩写,并将其转换成数字形式的月份。最后使用printf函数输出结果。注意,需要在年份的后两位前加上一个0,使其成为两位数。
阅读全文