Python:将两个字符串的h和m转换为24小时制时间格式

3
我有一个方法,需要输入两个变量:
  • 当前时间
  • 分钟数
这个方法非常简单。用户输入两个值,第一个是字符串,例如 '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模块,所以你的代码失败了。 - Martijn Pieters
3个回答

3

您不需要以那种方式解析时间参数,可以这样做:

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的datetime对象格式化“time”参数,称之为base_time
第5行:
您将minutestoadd参数转换为兼容的对象格式以进行加法运算
第6行:
两个datetime对象值的和
第7行:
以23:40:00这样的格式打印结果


我不想显示秒数?我该怎么做? - Muhammed Bhikha
将 print newtime.time() 替换为 print newtime.strftime('%H:%M')。 - chespinoza

1
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


0
time.localtime(currenttime + 45 * 60))

如果你想早点离开工作,试试IOT。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接