擅长:python、mysql、java
<p>最简单的方法是每30分钟迭代一次,并以此方式计算费用</p>
<pre class="lang-py prettyprint-override"><code>HALFHOUR_RATE = 0.6
NIGHT_FEE = 5
def get_charge(start_datetime, end_datetime):
tmp_datetime = start_datetime
charged = 0
last_night_charged_day = None
while tmp_datetime < end_datetime:
if tmp_datetime.hour >= 22 or tmp_datetime.hour < 7:
if tmp_datetime.hour == 22 and tmp_datetime.minute < 30:
# Still not a night
charged += HALFHOUR_RATE
# It is a night
else:
day = tmp_datetime.day
if tmp_datetime.hour < 7:
day -= 1
if day != last_night_charged_day:
last_night_charged_day = day
# Charge one time night fee
charged += NIGHT_FEE
else:
# It is a day
charged += HALFHOUR_RATE
tmp_datetime += datetime.timedelta(minutes=30)
return charged
</code></pre>