Calculating hours and minutes in python
我有一个任务需要计算马拉松的运行时间。我以这个为起点
1 2 3 | start_hour = 3 start_minute = 48 length = 172 |
基本上开始时间是3:48,持续172分钟。我的任务是找出马拉松的结束时间。结束时间应该是3:48格式,分钟和小时转换成字符串,并与":"组合在一起。我已经花了1个半小时的时间,仍然无法解决问题。这就是我得出的结论:
1 2 3 4 5 6 7 | endhour = start_hour + (length // 60) endminute = start_minute + (length % 60) end_minutee = endminute % 60 format(endhour) endhourAsStr = str(endhour) end_minuteeAsStr = str(end_minutee) print(endhourAsStr +":" + end_minuteeAsStr) |
但当我打印的最后一个小时比1小时短。我猜我需要对>或<做些什么,但我真的想不出来。我猜我只需要最后一次推。我对编程很陌生,我没有任何经验。
您可以使用一些
1 2 3 4 5 6 7 | start_hour = 3 start_minute = 48 length = 172 start = datetime.datetime(100, 1, 1, start_hour, start_minute, 0) end = start + datetime.timedelta(minutes=length) result = str(end.time()) |
如果要在结束时去掉
1 | result = end.strftime('%H:%M') |
我更喜欢这种方法,因为它可以解释一些边缘情况,比如从一天午夜开始,到第二天结束。
使用
1 2 3 4 5 6 7 8 | start_hour = 3 start_minute = 48 length = 172 elapsed_hours, elapsed_minutes = divmod(length, 60) extra_hour, finish_minute = divmod(start_minute + elapsed_minutes, 60) finish_hour = start_hour + elapsed_hours + extra_hour print("{hour}:{minute}".format(hour=finish_hour, minute=finish_minute)) |
这假设您不希望任何人在午夜/第二天之后完成。如果你想考虑这种可能性,你可以用24取
把每件事都放在几分钟内,然后按计划完成输出,怎么样?保持简单的理解和阅读:)
1 2 3 4 5 | start_time = start_hour*60 + start_minute end_time = start_time + length end_hour, end_minute = end_time // 60, end_time % 60 print('{}:{}'.format(end_hour, end_minute)) # 6:40 |
我建议
1 2 3 4 5 6 7 | endhour = start_hour + (length // 60) endminute = start_minute + (length % 60) endhour += endminute // 60 endminute = endminute % 60 endhour = endhour % 24 print('{}:{}'.format(endhour, endminute)) |
在像您一样初始化结束时间和分钟之后,您再次从结束时间中提取分钟和小时。
最后,将小时数调整为0到23之间。