【Python】timedelta类详解

timedelta类表示时间差,可以直接实例化得到,也可以由两个datetime类型的数据做差得到

导入

from datetime import timedelta

参数

实例化timedelta类时参数依次是:
days, seconds, microseconds, milliseconds, minutes, hours, weeks
所以如果你想实例化1天零6个小时的时间差对象需要指明参数:

td = timedelta(days=1, hours=6)
print(td)

输出:
在这里插入图片描述

属性

timedelta一般是由两个datetime类型的数据做差引入的,所以下面的例子中均在这样的上下文中讲解timedelta对象

  1. days:返回时间差的天数
    例:

    ini_time_str = '2020/8/3 23:00:51'
    end_time_str = '2020/9/1 7:48:50'
    ini_time = datetime.strptime(ini_time_str, '%Y/%m/%d %H:%M:%S')
    end_time = datetime.strptime(end_time_str, '%Y/%m/%d %H:%M:%S')
    print((end_time-ini_time).days)
    

    输出:
    在这里插入图片描述

  2. seconds:返回时间差的秒数
    例:

    ini_time_str = '2020/8/3 23:00:51'
    end_time_str = '2020/9/1 7:48:50'
    ini_time = datetime.strptime(ini_time_str, '%Y/%m/%d %H:%M:%S')
    end_time = datetime.strptime(end_time_str, '%Y/%m/%d %H:%M:%S')
    print((end_time-ini_time).seconds)
    

    输出:
    在这里插入图片描述

  3. microseconds:返回时间差的毫秒数
    例:

    ini_time_str = '2020/8/3 23:00:51'
    end_time_str = '2020/9/1 7:48:50'
    ini_time = datetime.strptime(ini_time_str, '%Y/%m/%d %H:%M:%S')
    end_time = datetime.strptime(end_time_str, '%Y/%m/%d %H:%M:%S')
    print((end_time-ini_time).microseconds)
    

    输出:
    在这里插入图片描述
    这里大家应该发现了,以上三个属性输出的值是timedelta对应位置的分量,而不是将时间差换算为某单位后的结果,为了便于大家理解,这里将以上例子中的timedelta对象直接输出:
    在这里插入图片描述
    可以看到,由于timedelta对象的microseconds位置的分量是0,所以第三个例子的输出为0

  4. min:返回timedelta下限(无论timedelta对象是什么返回都一样)
    例:

    print(timedelta.min)
    # 接上例,print((end_time-ini_time).min)返回相同的结果
    

    输出:
    在这里插入图片描述

  5. max:返回timedelta上限(无论timedelta对象是什么返回都一样)
    例:

    print(timedelta.max)
    

    输出:
    在这里插入图片描述

  6. resolution:返回timedelta的精度(无论timedelta对象是什么返回都一样)
    例:

    print(timedelta.resolution)
    

    输出:
    在这里插入图片描述

方法

total_seconds:返回将时间差转换为秒的结果
例:

ini_time_str = '2020/8/3 23:00:51'
end_time_str = '2020/9/1 7:48:50'
ini_time = datetime.strptime(ini_time_str, '%Y/%m/%d %H:%M:%S')
end_time = datetime.strptime(end_time_str, '%Y/%m/%d %H:%M:%S')
print((end_time-ini_time).total_seconds())

输出:
在这里插入图片描述

timedelta对象只有这一个方法,所以如果你想将时间差转换为其他单位需要乘以相应的系数

  • 6
    点赞
  • 66
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值