【问题标题】:Calculating hours and minutes in python在python中计算小时和分钟
【发布时间】:2018-01-22 05:57:10
【问题描述】:

我有一个任务,我需要计算马拉松的运行时间。 我以此为起点

start_hour = 3
start_minute = 48
length = 172

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

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 小时。 我猜我需要对 > 或

【问题讨论】:

    标签: python


    【解决方案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】:

      您可以使用一些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')
      

      我更喜欢这种方法,因为它可以解决极端情况,例如从接近午夜的一天开始并在第二天结束。

      【讨论】:

      【解决方案3】:

      如何在几分钟内保存所有内容,然后按预期计算输出?保持简单易懂:)

      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
      

      【讨论】:

        【解决方案4】:

        使用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。

        【讨论】:

          【解决方案5】:

          保持简单! :)

          hour = int(input("Starting time (hours): "))
          
          mins = int(input("Starting time (minutes): "))
          
          dura = int(input("Event duration (minutes): "))
          
          endmin=(mins+dura)%60
          
          endhour=(((hour*60)+mins+dura)//60)%24
          
          print(endhour,":",endmin)
          

          【讨论】:

          • 你还没有提到你想要什么?有什么问题
          【解决方案6】:

          我建议如下,

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

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

          【讨论】:

            【解决方案7】:

            让我们保持简单

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

            【讨论】:

              【解决方案8】:

              保持简短和简单

              st_hour = int(input("What's the start time in hours ?"))
              st_min = int(input("What's the start time in mins ?"))
              du_time = int(input("What's the duration time in mins ?"))
              
              end_hour = (st_hour + (st_min + du_time)//60)%24
              end_mins = (st_min + du_time)%60
              
              print()
              print("The end time = ", end_hour, ":", end_mins)
              

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 2023-03-05
                • 1970-01-01
                • 2022-06-10
                • 1970-01-01
                • 1970-01-01
                • 2011-05-08
                • 2014-05-17
                • 2021-09-17
                相关资源
                最近更新 更多