用C语言实现:给定一个YYYY-MM-DD格式的字符串,代表公元纪年的某一天。返回该日期是当年的第几天。
时间: 2024-02-11 21:04:41 浏览: 69
正则表达式实现将MM/DD/YYYY格式的日期转换为YYYY-MM-DD格式
可以使用C语言中的time.h头文件中的时间函数来实现该功能。具体实现方法如下:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
int main()
{
char str[11];
int year, month, day;
int days;
// 读入日期字符串
scanf("%s", str);
// 解析年月日
year = atoi(str);
month = atoi(str + 5);
day = atoi(str + 8);
// 计算当年第一天的日期
struct tm tm = {0};
tm.tm_year = year - 1900;
tm.tm_mon = 0;
tm.tm_mday = 1;
// 计算日期差值
time_t t1 = mktime(&tm);
tm.tm_mon = month - 1;
tm.tm_mday = day;
time_t t2 = mktime(&tm);
days = (int)difftime(t2, t1) / (24 * 3600) + 1;
printf("%d\n", days);
return 0;
}
```
该程序先读入日期字符串,然后解析出年月日三个整数。接着,利用time.h头文件中的函数计算当年第一天的日期和给定日期之间的差值,最终得到日期在当年中是第几天。注意,该程序假设输入的日期字符串格式正确,否则可能会导致程序崩溃或计算结果错误。
阅读全文