计算python中的小时和分钟

时间:2017-08-14 11:42:33

标签: python

我有一项任务,我需要计算马拉松的运行时间。 我把它作为一个起点

start_hour = 3
start_minute = 48
length = 172

基本上,开始时间是3:48,持续172分钟。 我的任务是找到马拉松结束的时间。结束时间应该看起来像这样的格式3:48,分钟和小时转换为字符串并与“:”放在一起。 我花了一个半小时,我仍然无法解决它。 这就是我所说的:

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小时。 我猜我需要用>做点什么或者<但我真的无法理解。我想我只需要最后的推动。 offtopic:我对程序很新,我没有任何经验。

8 个答案:

答案 0 :(得分:3)

您可以使用一些datetime技巧来获得有保证的正确结果:

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())

如果你想在最后摆脱:00秒,只需修改最后一行:

result = end.strftime('%H:%M')

我更喜欢这种方法,因为它可以解释边缘情况,例如从午夜开始一天到第二天结束。

答案 1 :(得分:1)

我建议

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之间。

答案 2 :(得分:1)

如何将所有内容保存在几分钟内,然后按照预期的方式计算输出?保持简单易懂和阅读:)

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

答案 3 :(得分:1)

使用divmod

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))

这假设您不希望任何人在午夜/第二天之后完成任务。如果您想考虑这种可能性,可以将finish_hour的模数设为24。

答案 4 :(得分:1)

让我们保持简单

hour = int(input("Starting time (hours): "))
mins = int(input("Starting time (minutes): "))
dura = int(input("Event duration (minutes): "))

print((((hour*60+mins+dura)//60)%24) , ":" , ((mins+dura)%60) , sep="")

hour = int(input("Starting time (hours): "))
mins = int(input("Starting time (minutes): "))
dura = int(input("Event duration (minutes): "))

endmins = (mins+dura)%60
endhours = ((hour*60 + mins + dura)//60)%24
print(endhours , ":" , endmins , sep="")

答案 5 :(得分:0)

保持简单! :)

.contentcontainer {
  width: 70%;
  margin: 25px auto;
  color: #61625B;
  text-align: justify;
  border-width: 1px;
  border-color: red;
  border-style: dashed;
  display: flex;
  align-items: center
}

.imagecontainer {
  width: 45%;
  margin: 50px auto;
  border-width: 1px;
  border-color: blue;
  border-style: dashed;
}

.imagecontainer>img {
  max-width: 100%;
}

.content {
  width: 45%;
  margin: 25px auto;
  border-width: 1px;
  border-color: green;
  border-style: dashed;
}

答案 6 :(得分:0)

简短简短

$window.addEventListener('click', function(){
    // record click event 
});

$window.addEventListener('keydown', function(){
    // record keydown event
});

答案 7 :(得分:-1)

我建议以下内容,

endhour=(start_hour*60+start_minute+length)%1440
endhour//=60
endmin=(start_minute+length)%60
print(endhour,":",endmin)

认为是一个非常简单的解决方案:)