0

我需要一些帮助来比较日期。该程序在用户输入输入日期时工作,并将其与日期的文本文档文件进行比较。如果日期在用户输入日期之间并且它与文档日期匹配,那么它将被执行..我想在这种情况下使用 switch case 而不是 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;
4

1 回答 1

0

我会考虑使用一些库进行日期算术和比较。为严肃的生产代码正确编码可能非常棘手,尤其是在语言环境中。从闰年开始,经过闰秒,变成珍珠般的热门问题之一为什么减去这两次(在 1927 年)会产生奇怪的结果?.

对于简单的初学者,我建议使用来自chrono实用程序的标准库difftime

你展示的if对我来说似乎很好,你可以很容易地difftimedate_compare.

不过有两个担忧。

您的 date_compare 操作数的顺序是什么?因为difftime签名是double difftime( time_t time_end, time_t time_beg );,这似乎与您使用的相反。否则,该陈述在逻辑上总是错误的。

此外,您似乎检查是否d在内部(tld->start; tld->begin),如果是,则退出0. 换句话说,0当文件适合日期间隔时,您会返回,我希望这是有意的。

于 2013-10-22T11:45:12.573 回答