对于一个正在开发的项目,我需要找出两个日期之间的差异,以检查哪个是最近的,我做得很好,但我发现了一个小错误。
对于使用struct tm的im日期,这是代码:
它在每个日期都有效,除非我想将月底的日期(如(2016年5月31日)与下一天(2016年6月1日)进行比较,否则它将返回0天,并应返回1天但如果我将其更改为30/5/2016,则返回1天而不是2天事情是5月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);
关于c - C天之间的差异1天不工作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37661640/