【问题标题】:python: convert two strings of h & m into 24 hour time formatpython:将h&m的两个字符串转换为24小时时间格式
【发布时间】:2012-11-05 06:01:25
【问题描述】:

我有一个需要两个变量的方法:

  • 当前时间
  • 分钟

方法很简单。用户输入两个值,第一个是字符串,例如。 '23:01' 第二个是整数,例如 50。因此该方法通过将两者相加来计算新时间,因此新时间应该是 23:51。 我让它工作,但是当时间变成 24:01 + 60 时,它变成了 25:01,这是一个不正确的时间。 我如何简单地使用python中的时间方法来添加时间? 到目前为止,这是我的代码,它引发了一个错误

import time
class timeCalc(object):
    def nextTime(self, time, minutes):
        t = time.split(':')
        mins = int(t[0]) * 60 + int(t[1]) + minutes
        h = str(mins/60)
        m = str(mins%60)
        if len(h) == 1:
            h = '0' + h
        if len(m) == 1:
            m = '0' + m
        nTime = time.strptime(h + ':' + m, "%H:%M")
        print nTime

ts = timeCalc()
ts.nextTime('23:01',60)

【问题讨论】:

  • 这里不需要使用类,你没有要维护的状态。您使用局部变量 time 屏蔽了 time 模块,因此您的代码将失败。

标签: python date methods time module


【解决方案1】:

你不需要这样解析时间参数,你可以这样做:

Import datetime
class timeCalc(object):
    def nextTime(self, time, minutestoadd):
        base_time = datetime.datetime.strptime(time, "%H:%M")
        minutesobj = datetime.timedelta(minutes = minutestoadd)
        newtime = basetime + minutesobj
        print newtime.time()

第 4 行:
您将“时间”参数格式化为日期时间对象,格式为 %H:%M,称为 base_time
第 5 行:
您将 minutestoadd 参数转换为兼容的对象格式以添加
第 6 行:
两个日期时间对象值的总和
第 7 行:
以 23:40:00 等格式打印结果

【讨论】:

  • 我不想显示秒数?我该怎么做
  • 将 print newtime.time() 替换为 print newtime.strftime('%H:%M')
【解决方案2】:
time.localtime(currenttime + 45 * 60))

IOT 早点离开你的工作试试这个

【讨论】:

    【解决方案3】:
    from datetime import datetime, timedelta
    
    def nextTime(time, minutes):
        return (datetime.strptime(time, '%H:%M') + timedelta(minutes=minutes)).time()
    
    nextTime('23:01', 60)
    

    返回可以打印的datetime.time(0, 1)

    nextTime('23:01', 60).strftime('%H:%M')
    

    并返回00:01

    【讨论】:

      猜你喜欢
      • 2011-11-18
      • 1970-01-01
      • 1970-01-01
      • 2020-05-09
      • 1970-01-01
      • 2015-01-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多