我有一个非常简单的函数,它应该计算给定时间单位中两个日期之间的时间量,例如:getPartialPeriod(January 1, February 15, months)
会导致1.5
。
我真的在努力证明这一点 - 我从循环开始,因为我觉得这是最困难的部分。我已经定义了许多Hoare三元组和循环不变量只是为了发现它们都是无用的。我很感激能得到的所有帮助。
函数的伪代码:
getPartialPeriod(startDate, endDate, timeUnitType):
partialPeriod = 0
currentDate = startDate + 1 timeUnit
CASE timeUnitType
weeks: daysInTimeUnit = 7
months: daysInTimeUnit = 30
DEFAULT: daysInTimeUnit = 1
END CASE
WHILE currentDate <= endDate DO
INCREMENT partialPeriod
currentDate = currentDate + timeUnit
END WHILE
remainingPeriod = amount of days between currentDate and endDate
partialPeriod = partialPeriod + remainingPeriod / daysInTimeUnit
P.S。请忽略它似乎有点愚蠢的实现 - 这并不重要。