datetime计算时间差(小时)

因为datetime计算时间差,只有 seconds, days,没有hours,于是,我就利用 seconds / 3600,来计算hours,但是出现了错误的结果

(new_time - old_time).seconds
(new_time - old_time).days

datetime计算hours案例

from datetime import datetime
def calc_hours(old):
    old_time = datetime.strptime(old, "%Y-%m-%d %H:%M:%S,%f")
    new_time = datetime.now()
    sec = (new_time - old_time).seconds
    return round(sec/3600, 3)

t = '2020-11-19 15:04:47,397'
print(calc_hours(t))

计算结果

old_time:  2020-11-19 15:04:47.397000
new_time:  2020-11-21 22:48:12.076836
7.723

对,你没有看错,是 7 小时,19 号和 21 号相差2天,结果有问题,然后我又算了下days的结果

from datetime import datetime
def calc_hours(old):
    old_time = datetime.strptime(old, "%Y-%m-%d %H:%M:%S,%f")
    new_time = datetime.now()
    days = (new_time - old_time).days
    return days

t = '2020-11-19 15:04:47,397'
print(calc_hours(t))

计算结果

old_time:  2020-11-19 15:04:47.397000
new_time:  2020-11-21 22:50:19.873813
2

天数是对的

后来,我又看了下秒数计算的结果,下午15点到晚上22点多,小时差不多就是 7.723,所以,这个秒数是计算的当天的小时数,而不是总的小时数

因此,想要计算总的小时数,需要把两个时间相加

from datetime import datetime
def calc_hours(old):
    old_time = datetime.strptime(old, "%Y-%m-%d %H:%M:%S,%f")
    new_time = datetime.now()
    days = (new_time - old_time).days
    sec = (new_time - old_time).seconds
    hours = days * 24 + round(sec/3600, 3)
    return hours
t = '2020-11-20 15:04:47,397'
print(calc_hours(t))

计算结果

old_time:  2020-11-19 15:04:47.397000
new_time:  2020-11-21 22:54:27.109447
days:  2
sec:  28179
55.827
  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值