C 天数之间的差异 1 天不工作

C difference between days 1 day not working

对于一个正在开发的项目,我需要找到两个日期之间的差异以检查哪个日期更近,我做得很好,但我发现了一个小错误。

对于使用 struct tm 的日期,这是代码:

它适用于每个日期,除非我想比较月末的日期(31/5/2016)和第二天(1/6/2016),它 return我是 0 天,它应该 return 1。但是如果我将它更改为 2016 年 5 月 30 日,它 return 是 1 天而不是 2 天。事情可能是 31 天而不是 30.. 所以它在某些月份有效,而在其他月份无效。.有谁知道如何解决这个问题?

提前致谢,抱歉我的英语不好,这不是我的母语

secondDate.tm_mon 中的值 0 而不是 1 表示一月。

试试这个:

struct tm firstDate, secondDate;
firstDate.tm_hour = 0;
firstDate.tm_min = 0;
firstDate.tm_sec = 0;
firstDate.tm_mon = 5 - 1;
firstDate.tm_mday = 30;
firstDate.tm_year = 2016 - 1900; //difference between current year and 1900

secondDate.tm_hour = 0;
secondDate.tm_min = 0;
secondDate.tm_sec = 0;
secondDate.tm_mon = 6 - 1;
secondDate.tm_mday = 1;
secondDate.tm_year = 2016 - 1900;

time_t fDate = mktime(&firstDate);    // 31/5/2016
time_t sDate = mktime(&secondDate);   // 1/6/2016
int diff = (difftime(fDate, sDate));

printf("%d", diff / 86400);