减去两次以获得持续时间Python

时间:2020-07-30 19:46:17

标签: python python-3.x datetime

如何减去两次以获得Python的持续时间?

我已经在下面使用datetime尝试了以下代码。

开始时间的输入= 20-07-2020 11:00:00

输入停止时间= 20-07-2020 13:30:00

我想要的输出是2.5小时或2小时30分钟

  tbl_uvregression(
    neil[c("time", "OutcomeDischarge0Death1", "HTN")],
    method = coxph,
    y = Surv(time, OutcomeDischarge0Death1),
    exponentiate = TRUE,
    pvalue_fun = function(x) style_pvalue(x, digits = 2)
  )%>%

1 个答案:

答案 0 :(得分:0)

日期20-07-2020-day-month-year与您的%m-%d-%Y不匹配,这意味着month-day-year。您的daymonth顺序错误。因此,您必须使用%d-%m而不是%m-%d

顺便说一句:,您必须计算stop - start而不是start - stop

from datetime import datetime

start = '20-07-2020 11:00:00'
stop = '20-07-2020 13:30:00'

format_date = "%d-%m-%Y %H:%M:%S"

dt_start = datetime.strptime(start, format_date)
dt_stop  = datetime.strptime(stop, format_date)

duration = dt_stop - dt_start

print(f'Start: {dt_start}, Stop: {dt_stop}')
print(duration)

结果

Start: 2020-07-20 11:00:00, Stop: 2020-07-20 13:30:00
2:30:00

要对其进行格式化,您需要获取总秒数并计算小时,分钟,秒数

rest = duration.total_seconds()
hours = int(rest // (60*60))
rest = rest % (60*60)
minutes = int(rest // 60)
seconds = int(rest % 60)

print(f"{hours} hours, {minutes} minutes, {seconds} seconds")

结果

2 hours, 30 minutes, 0 seconds

或者您必须将持续时间转换为字符串,然后将其分割

hours, minutes, seconds = str(duration).split(':')

print(f"{hours} hours, {minutes} minutes, {seconds} seconds")

结果

2 hours, 30 minutes, 00 seconds

顺便说一句::当您将duration转换为字符串时,它运行的代码类似于我使用total_seconds进行的计算-我在源代码中进行了检查。

相关问题