用C写一个函数根据时间得到今天是周几,传入的参数就是struct calendar_date_time sysdt
时间: 2024-02-20 13:00:28 浏览: 68
C_实现的根据日期得到今天是星期几
好的,您可以使用 C 标准库中的函数来实现这个功能。以下是一个示例代码:
```
#include <stdio.h>
#include <time.h>
struct calendar_time {
uint8_t sec;
uint8_t min;
uint8_t hour;
};
struct calendar_date {
uint8_t day;
uint8_t month;
uint16_t year;
};
struct calendar_date_time {
struct calendar_time time;
struct calendar_date date;
};
int get_weekday(struct calendar_date_time sysdt) {
struct tm timeinfo;
timeinfo.tm_sec = sysdt.time.sec;
timeinfo.tm_min = sysdt.time.min;
timeinfo.tm_hour = sysdt.time.hour;
timeinfo.tm_mday = sysdt.date.day;
timeinfo.tm_mon = sysdt.date.month - 1;
timeinfo.tm_year = sysdt.date.year - 1900;
timeinfo.tm_isdst = -1; // 自动确定夏令时
time_t time = mktime(&timeinfo);
if (time == -1) {
return -1;
}
struct tm* timeinfo2 = localtime(&time);
if (timeinfo2 == NULL) {
return -1;
}
return timeinfo2->tm_wday;
}
```
这个函数接收一个 calendar_date_time 结构体作为参数,然后将其转换为 tm 结构体,并使用 mktime 函数将其转换为 time_t 类型的时间戳。然后,我们使用 localtime 函数将时间戳转换为另一个 tm 结构体,并从中获取 weekday 的值。最后,我们返回 weekday 的值。
请注意,此函数的返回值为 weekday 的值,其中 0 表示星期日,1 表示星期一,以此类推,6 表示星期六。如果出现任何错误,函数将返回 -1。
阅读全文