Python :时间增量以另一种方式比较时间,而每个时间增加一个小时



我正在构建停车场系统,但在比较时间时遇到了一些问题。假设"约翰"应该为停车一小时支付 5 美元。约翰将车停在停车场3:30小时,并在停车时间3:33停止时付款。所以我想在这里得到的是这样的东西,但问题是每小时做一个 if 是不合逻辑的。有什么方法可以以某种方式计算要计算的付款总额。另外我没有提到的是3:33是半小时多,所以我们可以再计算一个小时。但我想在这里做的是:

  • 我不需要为停车创建太多 if 来计算 JOHN 必须支付的金额。

  • 如何自动将 5 美元添加到小时数中,约翰留在停车场?

我的代码:

if Parking_Sum > datetime.timedelta(minutes=30):
print ("You were parking for more then 30MINS You have to pay 5$")
Price = 5
elif Parking_Sum > datetime.timedelta(hours=1):
print ("You were parking for more then hour You have to pay 10$")
Price = 10
elif Parking_Sum > datetime.timedelta(days=1):
print ("You were parking for more then DAY You have to pay 120$")
Price = 120

找出输入时间和退出时间之间的差异。计算总分钟数,车辆在停车,然后计算费用。 这是一个例子——

time_entered = datetime(year=2019, month=9, day=2, hour=10, minute=9)
time_left = datetime(year=2019, month=9, day=2, hour=12, minute=40)
total_minutes = ((time_left - time_entered).total_seconds())//60
total_hours = (total_minutes//60 + 1) if total_minutes%60 > 30 else (total_minutes//60)
total_charges = total_hours*5

你可以使用

import datetime
import math
def parkingcosts(price, t):
return math.ceil(t.total_seconds()/3600)*price
price_per_h = 5
parkingtime = datetime.timedelta(minutes=30)
print(parkingcosts(price_per_h, parkingtime))
# 5
parkingtime = datetime.timedelta(hours=1.5)
print(parkingcosts(price_per_h, parkingtime))
# 10
parkingtime = datetime.timedelta(days=1)
print(parkingcosts(price_per_h, parkingtime))
# 120

我认为从timedelta对象获取小时的最简单方法是使用.total_seconds().否则,您必须总结.days.seconds.microseconds(虽然没有小时,几分钟......检查dir(datetime.timedelta())(。

最新更新