gpt4 book ai didi

c - 查找一个月的第一天属于星期几的结果不正确

转载 作者:太空宇宙 更新时间:2023-11-04 05:48:33 31 4
gpt4 key购买 nike

我有以下 C 代码:

#include <stdio.h>
#include <time.h>
struct tm tm;
int startDayOfWeek;
int findStartDateInMonth(int month,int year)
{
tm.tm_mon = month;
tm.tm_year = year - 1900;
tm.tm_mday = 1;
tm.tm_hour = tm.tm_min = tm.tm_sec = 0;
tm.tm_isdst = -1;
if(mktime(&tm) != -1)
{
startDayOfWeek = tm.tm_wday;
}
return startDayOfWeek;
}
int main(void) {

char *wday[] = {"Sunday", "Monday", "Tuesday", "Wednesday",
"Thursday", "Friday", "Saturday"};
int a = findStartDateInMonth(8,2018);
if(mktime(&tm) != -1)
printf("%s\n", wday[tm.tm_wday]);
return 0;
}

代码返回星期六,这是错误的,因为 2018 年 8 月 1 日是星期三。

如果有任何帮助,我将不胜感激。

最佳答案

struct tm 的定义中有一个陷阱:

int tm_mday; // day of the month — [1, 31]
int tm_mon; // months since January — [0, 11]

也就是说,tm_mday 从 1 开始,而 tm_mon 从 0 开始。将其设置为 8 意味着您查看的是 9 月 1 日,而不是 8 月 1 日(2018-09-01 确实是星期六)。

尝试

tm.tm_mon = month - 1;

关于c - 查找一个月的第一天属于星期几的结果不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52075465/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com