我需要一些帮助来比较日期。该程序在用户输入输入日期时起作用,并将其与日期的文本文档文件进行比较。如果日期在用户输入日期和文档日期之间,那么它将被执行..我想在这种情况下使用开关案例而不是if ..是否可能?
if (date_compare(tld->begin, d) > 0 && //compare user input start date with actual date.txt begin input date
date_compare(tld->end, d) < 0) //compare user input end date with actual date.txt input date
return 0;
答案 0 :(得分:0)
我会考虑使用一些库进行日期算术和比较。为严格的生产代码正确编码可能非常棘手,特别是对于语言环境。从闰年开始,通过闰秒,进入珍珠,如最重要的问题之一Why is subtracting these two times (in 1927) giving a strange result?。
对于简单的初学者,我建议使用difftime实用程序中的标准库chrono。
您展示的if
对我来说似乎很好,您可以轻松地将difftime
与date_compare
一起包裹。
但有两个问题。
date_compare的操作数顺序是什么?对于difftime
,签名为double difftime( time_t time_end, time_t time_beg );
,这似乎与您使用的签名相反。否则,该陈述在逻辑上总是错误的。
此外,您似乎还要检查d
是否在(tld->start; tld->begin)
内,如果是,请退出0
。换句话说,当文件符合日期间隔时,您返回0
,我希望这是预期的。