C语言根据年月日计算星期
时间: 2024-09-10 16:28:41 浏览: 58
在C语言中,我们可以使用`mktime()`函数和`strftime()`函数配合`calendar.h`库来计算给定日期对应的星期。`mktime()`函数将日期转换成时间结构体`tm`,然后`strftime()`函数可以根据这个结构体格式化日期字符串,其中包括星期信息。
以下是一个简单的示例代码片段:
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <string.h>
// 函数原型
char* get_weekday(int year, int month, int day);
// 计算并返回星期几
char* get_weekday(int year, int month, int day) {
struct tm timeinfo;
memset(&timeinfo, 0, sizeof(timeinfo));
timeinfo.tm_year = year - 1900; // mktime要求从1900年开始
timeinfo.tm_mon = month - 1; // 月份从0开始计数
timeinfo.tm_mday = day;
if (timegm(&timeinfo) == -1) {
return "Invalid date";
}
char week_day[10];
strftime(week_day, sizeof(week_day), "%A", &timeinfo);
return week_day;
}
int main() {
int year = 2023, month = 1, day = 15; // 示例日期
char *weekday = get_weekday(year, month, day);
printf("The date %d/%d/%d is a %s\n", day, month + 1, year, weekday);
free(weekday); // 释放内存
return 0;
}
```
在这个例子中,`get_weekday()`函数会返回一个表示星期的字符串,如"Monday"、"Tuesday"等。如果输入的日期无效,它将返回"Invalid date"。
阅读全文