【问题标题】:Calculating time difference and splitting datetime elements into variables计算时差并将日期时间元素拆分为变量
【发布时间】:2020-11-30 17:47:30
【问题描述】:

我想计算两个 24 小时制时间值之间的时差,仅包含小时、分钟和秒值。然后,我想将时差拆分为小时、分钟和秒值,并将它们作为三个不同的变量输出。

例如,我想要的输出是:

time1 = '10:33:26'
time2 = '17:25:39'

Hours: 6
Minutes: 52
Seconds: 13

因为 17:25:39 是 10:33:26 之后的 6 小时 52 分 13 秒。

我试过下面的代码:

from datetime import datetime

s1 = '10:33:26'
s2 = '17:25:39'
FMT = '%H:%M:%S'
tdelta = datetime.strptime(s2, FMT) - datetime.strptime(s1, FMT)
print(tdelta)

它正确输出6:52:13,但我不知道如何将65213 拆分为三个不同的变量。

【问题讨论】:

标签: python python-3.x datetime


【解决方案1】:

您可能希望自己直接从total_seconds() 进行数字计算,而不是依赖于对字符串转换的结果进行反向解析(用于人类可读的输出)。例如:

from datetime import datetime

s1 = '10:33:26'
s2 = '17:25:39'
FMT = '%H:%M:%S'
tdelta = datetime.strptime(s2, FMT) - datetime.strptime(s1, FMT)

ts = int(tdelta.total_seconds())
secs = ts % 60
mins = (ts // 60) % 60
hours = (ts // 3600)

print(hours, mins, secs)

【讨论】:

    【解决方案2】:

    您可以使用 timedelta 执行数值计算。

    time1 = datetime.timedelta(hours=10, minutes=33,seconds=26)
    time2 = datetime.timedelta(hours=17, minutes=25,seconds=39)
    
    time_diff = time2 - time1
    
    hour, min, sec = str(time_diff ).split(':')
    
    print(hour, min, sec)
    
    

    【讨论】:

      【解决方案3】:

      您可以将输出转换为字符串,然后使用split() 方法。例如:

      str(tdelta).split(':')
      

      将输出:

      ['6', '52', '13']
      

      然后你可以简单地遍历输出的列表。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-10-18
        • 1970-01-01
        • 1970-01-01
        • 2021-11-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多