gpt4 book ai didi

c - 如何在 C 中使用 mktime 检查日期是否有效?

转载 作者:太空宇宙 更新时间:2023-11-04 03:22:13 24 4
gpt4 key购买 nike

我的代码有点问题。我需要检查用户给定的日期是否有效。我想使用 2 条规则检查它:1. 日期是日历中的有效日期(例如 29.2.2015 无效,因为 2015 年 2 月只有 28 天) 2. 日和月最多只能是 2 个数字(例如第 10 和 02 是有效的,但 010而 002 则不是)。感谢所有帮助!

到目前为止,这是我的代码:

void dateValidator(const char *date1) {
struct tm date = {0};

int day1;
int month1;
int year1;

int vday;
int vmonth;
int vyear;

sscanf(date1, "%3d.%3d.%d",&day1,&month1,&year1);
/**How do I check that if sscanf reads more than 2 characters on month and day, date is
invalid?**/

date.tm_year = year1 - 1900;
date.tm_mon = month1 - 1;
date.tm_mday = day1;
date.tm_isdst = -1;

vday = date.tm_mday;
vmonth = date.tm_mon;
vyear = date.tm_year;

mktime(&pvm);

if ((vday != date.tm_mday) || (vmonth != date.tm_mon) || (vyear != date.tm_year)) {
/**This doesnt seem to work**/
printf("Invalid date");
}
}

最佳答案

我已经删除了我之前的答案并发布了另一个。其实你的代码没问题,你只需要将正确的参数发送到 mktime 并检查它的返回值。 IE。改变:

mktime(&pvm);
if ((vday != date.tm_mday) || (vmonth != date.tm_mon) || (vyear != date.tm_year)) {
/**This doesnt seem to work**/
printf("Invalid date");
}

类似于:

r = mktime(&date);
if (r == -1 || (vday != date.tm_mday) || (vmonth != date.tm_mon) || (vyear != date.tm_year)) {
printf("Invalid date");
}

并将变量r声明为time_t r;

关于c - 如何在 C 中使用 mktime 检查日期是否有效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44471366/

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