如何计算C中两个日期之间的月份

时间:2012-08-04 15:20:00

标签: c unix

我有一个场景,系统在18个月内计算每月费用。比如说,收费是10美元;然后计算每月10美元/ 18 = 0.56美元。

如果客户在18个月中期取消服务。我需要找到他使用过的月数并退还剩余的月数。 例如:客户于2012年6月2日创建并于2012年8月13日取消,这意味着他完全使用了2个月,因此我需要退还($10/18)* (18-2)

3 个答案:

答案 0 :(得分:0)

由于这只需要几年的时间 - 我会手动建立一个每月开始的time_t值的查找表。

然后记录他们启动服务的time_t,现在检查time_t,然后扫描表格中的值之间的数值。

PS。 time_t是时间函数的'C'stdlib基础,它是自1970年以来的秒数,并被time.h中的所有函数使用。

答案 1 :(得分:0)

如果我理解正确,你想计算两个日期之间的整月数量......所以算法可以是这样的:

curDate  = fromDate;
curDate.month++;
totMonths = 0;
while (curDate < fromDate) {
    totMonths++;
    if (curDate.month == 12) {
        curDate.month = 1;
        curDate.year++;
    } else curDate.month++;
}

答案 2 :(得分:0)

您可以创建一个计算此方法的方法,但更好的方法是,编写一个ADT来表示一个日期对象,该对象应该自行完成所有计算

int chargeFor(int createdD,int createdM,int createdY,int canceledD,int canceledM,int canceledY){
   int deltaD = canceledD - createdD;
   int deltaM = canceledM - createdM;
   int deltaY = canceledD - createdD;

   if( deltaD != 0 )
      return result = deltaY * 12 + deltaM + 1; 
   else 
      return result = deltaY * 12 + deltaM; 

}