python - Python:如何检查时间是否超过指定时间?
问题描述
我正在尝试编写停车场费用计算器。提供多种费率:从早上 7 点到晚上 10.30 - 每 30 分钟 0.60 美元 夜间收费 晚上 10.30 到早上 7 点 - 固定费用 5 美元
如果停车时间从白天的价格溢出到晚上的价格,我该如何计算?下面是我现在的位置。我不确定从这里去哪里,或者这是否是正确的开始方式。
def getCharge(self, endTime, startTime, rate):
endTime = datetime.strptime(endTime, '%d/%m/%Y %H:%M')
startTime = datetime.strptime(startTime, '%d/%m/%Y %H:%M')
# elapsedDays = (endTime - startTime).days
# print(elapsedDays)
duration = (endTime - startTime).total_seconds() / 60
print(duration)
blocks = math.ceil( duration / 30 )
print(blocks)
charge = blocks * rate
return charge
总结一下:
- 如果停车时间超过晚上 10.30,我如何添加支票(将收取固定的夜间费用)
- 如果停车时间超过夜间时间并进入第二天早上 7 点之后,我如何添加支票(前一天的白天费率 + 夜间费率 + 第二天的白天费率)
解决方案
最简单的方法是每 30 分钟迭代一次并以这种方式计算费用。
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
推荐阅读
- c++ - Qt 从派生类发出基类信号
- python - ModuleNotFoundError:jupyter 笔记本中没有名为“deeppavlov”的模块
- wordpress - WooCommerce Amazon Fulfillment SellerSKU 无效
- reactjs - 功能组件与类组件作为容器组件
- c - 如何处理“dir”的输出?
- windows - dhcpsapi.exe 文件在任务管理器中继续运行
- java - 在 Selenium 中获取页面对象元素的 Null 值
- angular - ngIf 仅适用于页面刷新
- office365 - 通过 Microsoft Graph 从 PowerShell 更新联系人图像
- amazon-web-services - 将 EKS(AWS kubernetes)上 JHub 的入口流量列入白名单的好方法?