C语言标准宏__DATE__格式化YY/MM/DD,不能用C语言标准库函数
时间: 2023-10-25 11:24:36 浏览: 65
日期格式化函数
C语言标准宏__DATE__返回的日期格式为"MMM DD YYYY",其中MMM表示月份的英文缩写,DD表示日期,YYYY表示年份。要将其格式化为YY/MM/DD的形式,可以使用如下代码:
```c
#include <stdio.h>
#define YEAR (4)
#define MONTH (3)
#define DAY (1)
int main() {
char date[] = __DATE__;
char year[3] = {date[YEAR + 2], date[YEAR + 3], '\0'};
char month[3] = {0};
char day[3] = {0};
int i = 0, j = 0;
// 将月份的英文缩写转换为数字
switch (date[0]) {
case 'J':
if (date[1] == 'a') {
month[0] = '0';
month[1] = '1';
} else if (date[2] == 'n') {
month[0] = '0';
month[1] = '6';
} else {
month[0] = '7';
month[1] = '1';
}
break;
case 'F':
month[0] = '0';
month[1] = '2';
break;
case 'M':
if (date[2] == 'r') {
month[0] = '0';
month[1] = '3';
} else {
month[0] = '0';
month[1] = '5';
}
break;
case 'A':
if (date[1] == 'p') {
month[0] = '0';
month[1] = '4';
} else {
month[0] = '0';
month[1] = '8';
}
break;
case 'M':
month[0] = '0';
month[1] = '5';
break;
case 'J':
if (date[1] == 'u') {
month[0] = '0';
month[1] = '6';
} else {
month[0] = '0';
month[1] = '7';
}
break;
case 'A':
month[0] = '0';
month[1] = '8';
break;
case 'S':
month[0] = '0';
month[1] = '9';
break;
case 'O':
month[0] = '1';
month[1] = '0';
break;
case 'N':
month[0] = '1';
month[1] = '1';
break;
case 'D':
month[0] = '1';
month[1] = '2';
break;
}
// 提取日期
for (i = 0; i < 2; i++) {
if (date[DAY + i] >= '0' && date[DAY + i] <= '9') {
day[j++] = date[DAY + i];
}
}
// 输出格式化后的日期
printf("%s/%s/%s", year, month, day);
return 0;
}
```
上述代码中,首先将__DATE__返回的日期字符串存储到char数组date中。然后,通过switch语句将月份的英文缩写转换为数字,存储到char数组month中。接着,通过for循环提取日期,存储到char数组day中。最后,使用printf函数输出格式化后的日期。
阅读全文