我有一个场景,系统在18个月内计算每月费用。比如说,收费是10美元;然后计算每月10美元/ 18 = 0.56美元。
如果客户在18个月中期取消服务。我需要找到他使用过的月数并退还剩余的月数。
例如:客户于2012年6月2日创建并于2012年8月13日取消,这意味着他完全使用了2个月,因此我需要退还($10/18)* (18-2)
。
答案 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;
}