美文网首页
datetime 计算时间差(小时)

datetime 计算时间差(小时)

作者: 随时学丫 | 来源:发表于2020-11-21 22:55 被阅读0次

    因为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
    

    相关文章

      网友评论

          本文标题:datetime 计算时间差(小时)

          本文链接:https://www.haomeiwen.com/subject/dhjyiktx.html