一、介绍
timedelta
类表示时间差,可以直接实例化,也可以由两个 datetime
类型的数据作差得到。
缘起于求两个时间差,并需要转换为特定的单位(天、小时、分钟等),遂产生此需求。
二、导入
导入具体模块为:
from datetime import timedelta
参数为:
# days seconds microseconds milliseconds minutes hours weeks
# 实例化
td = timedelta(days=1, hours=8)
# datetime.timedelta(days=1, seconds=28800)
print(td)
# 1 day, 8:00:00
通过以下可以查看相应属性和方法。
dir(timedelta)
'''
['__abs__',
'__add__',
'__bool__',
'__class__',
'__delattr__',
'__dir__',
'__divmod__',
'__doc__',
'__eq__',
'__floordiv__',
'__format__',
'__ge__',
'__getattribute__',
'__gt__',
'__hash__',
'__init__',
'__init_subclass__',
'__le__',
'__lt__',
'__mod__',
'__mul__',
'__ne__',
'__neg__',
'__new__',
'__pos__',
'__radd__',
'__rdivmod__',
'__reduce__',
'__reduce_ex__',
'__repr__',
'__rfloordiv__',
'__rmod__',
'__rmul__',
'__rsub__',
'__rtruediv__',
'__setattr__',
'__sizeof__',
'__str__',
'__sub__',
'__subclasshook__',
'__truediv__',
'days',
'max',
'microseconds',
'min',
'resolution',
'seconds',
'total_seconds']
'''
三、实例
# 导入模块
from datetime import timedelta, datetime
begin_time = '2022-11-20 23:16:00'
end_time = '2022-11-25 15:16:17'
# 转换为时间格式
begin_time = datetime.strptime(begin_time, '%Y-%m-%d %H:%M:%S')
end_time = datetime.strptime(end_time, '%Y-%m-%d %H:%M:%S')
# 求时间差
print(end_time - begin_time)
# 4 days, 16:00:17
1.days 天数
返回时间差的天数。
(end_time - begin_time).days # 4
2.seconds 秒数
返回时间差的秒数。
注意:此秒数并非整体时间差,而是时间部分的秒数!
(end_time - begin_time).seconds # 57617
3.microseconds 毫秒数
返回时间差的毫秒数。
(end_time - begin_time).microseconds # 0
# 因为原始数据没有毫秒
days
、seconds
、microseconds
输出的是时间差对应位置的分量,而不是讲时间差转换单位的结果。
4.min 下限
返回时间差的下限(无论timedelta
对象是什么返回都一样)。
(end_time - begin_time).min # datetime.timedelta(days=-999999999)
print((end_time - begin_time).min) # -999999999 days, 0:00:00
5.max 上限
返回时间差的上限(无论timedelta
对象是什么返回都一样)。
(end_time - begin_time).max # datetime.timedelta(days=999999999, seconds=86399, microseconds=999999)
print((end_time - begin_time).max) # 999999999 days, 23:59:59.999999
6.resolution 精度
返回时间差的精度。
(end_time - begin_time).resolution # datetime.timedelta(microseconds=1)
print((end_time - begin_time).resolution) # 0:00:00.000001
7.total_seconds 总秒数
toal_seconds
是 timedelta
对象的唯一一个方法。
将时间差转换为秒的单位进行返回。
后续如需转换为其他单位需自行乘以相应的系数。
(end_time - begin_time).total_seconds() # 403217.0
工作中常在数据框中进行转换。
# 转换单位
data['时间_diff_day'] = data['时间_diff'].map(lambda x: x.days)
data['时间_diff_second'] = data['时间_diff'].map(lambda x: x.total_seconds())
data['时间_diff_hour'] = data['时间_diff_second'] / 3600
注意 total_seconds
为方法,需要加括号,其他为属性,无须添加括号。
标签:__,begin,end,timedelta,Python,笔记,seconds,time From: https://www.cnblogs.com/hider/p/16910063.html参考链接:【Python】timedelta类详解