【问题标题】:Calculating the time difference between two inputted times计算两个输入时间之间的时间差
【发布时间】:2020-12-31 13:16:30
【问题描述】:

我曾在一个程序上工作,该程序使用用户输入要求两个特定时间(开始时间和结束时间)。 格式为xx:yy or hours:minutes

我希望以两种形式计算和打印两个给定时间之间的差异(正确的 {xx:yy} 和错误的 {xx Hours and yy Minutes}

我试过这个来获取用户输入:

start1 = int(input("1st Start Time: "))
end1 = int(input("1st EndTime: "))

这里的问题是冒号不能转换成数字,所以不能简单地相互减去。

据您所知,这个程序是为计算从开始到结束的工作时间而设计的。

所以我希望用户输入开始和结束时间并得到结果,同样的事情十次,然后将(所有工作时间)相加,创建一个最终工作时间!还应该有一个选项可以随时通过键入“完成”来结束它并获得最终总和,而不必通过所有十个迷你工作时间。

【问题讨论】:

    标签: python datetime time calculator data-conversion


    【解决方案1】:

    您可以获取用户的输入并转换为 DateTime 对象。然后简单地减去这两个值。

    您可以将这些值存储在您的程序中,并处理逻辑以对这些值求和并处理您的“完成”要求。

    
    from datetime import datetime, timedelta
    
    start = 'abcd'
    end = '14:31'
    
    try:
    
        s = datetime.strptime(start, "%H:%M")
        e = datetime.strptime(end, "%H:%M")
        delta = e - s
    
    
        print(delta)
        print(f"{str(delta).split(':')[0]} Hours and {str(delta).split(':')[1]} Minutes")
        
    except Exception as UserInputError:
        print(f"Could not parse time from user input. Error: {UserInputError}")
    
    #Properly:  2:01:00
    #Improperly: 2 Hours and 01 Minutes
    
    # With Bad input: 
    # Could not parse time from user input. Error: time data 'abcd' does not match format '%H:%M'
    

    【讨论】:

    • 效果很好!如果这个人不会写“22:56”而是一些随机的东西,比如“jdjdhdh”,我怎么能写自定义错误消息。所以他们没有收到复杂的错误信息?
    • 您可以捕获异常并优雅地处理它。这只是一个捕获任何异常的简单示例。
    • @TroopekYT 这能回答你的问题吗?
    • 太好了,你能接受答案和+1吗,拜托:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-11
    • 1970-01-01
    • 2014-09-21
    • 1970-01-01
    相关资源
    最近更新 更多