python timedelta_Python使用笔记:时间的运算timedelta

用timedelta做时间运算,包括加减乘除,甚是方便。timedelta精度从天到毫秒。本文结合实例介绍timedelta的用法。

1. 一个实例

先来个实例。假设我有公共交通的时刻表,包含车辆进站和出站的时刻(A表示departure, D表示arrival),如下:

#Station Line A/D Time

Arènes T1 A 05:27:00

Arènes 64 D 05:30:00

Arènes T2 D 05:35:00

Arènes T1 A 05:38:00

Arènes T1 D 05:45:00

Arènes 65 D 05:55:00

现在想算某条线路(如34路车)在某个站点一天停留多少时间。这难免需要对时间进行加减运算。Python的timedelta可以很好地做到这一点。

class datetime.timedelta(days=0, seconds=0, microseconds=0, milliseconds=0, minutes=0, hours=0, weeks=0) # 注意参数的顺序

# A duration expressing the difference between two date, time, or datetime instances to microsecond resolution. Arguments may be integers or floats, and may be positive or negative.

2. 字符串转换成timedelta

将上述形如“05:55:00”(我在数据库保存为字符串)转换成timedelta:

from datetime import timedelta

def convert2timedelta(s):

"""convert string, like 00:00:00, to timedelta"""

tm = map(int, s.split(':'))

return timedelta(hours=tm[0], minutes=tm[1], seconds=tm[2]) # convert to timedelta

Python3支持的操作很丰富,包括+, -, *, /, //, %, divmod。除此之外,timedelta是hashable(作为字典的key),还可以进行比较==, !=。

3. timedelta

str(tm) # 返回的格式是:[D day[s], ][H]H:MM:SS[.UUUUUU], 如'1 day, 5:05:06.000001'

timedelta.total_seconds() # 返回总的秒数,等同于td / timedelta(seconds=1)

timedelta.min # 最小值,'-999999999 days, 0:00:00'

timedelta.max # 最大值,'999999999 days, 23:59:59.999999'

timedelta.resolution # 精度,0:00:00.000001

repr(tm) # 返回的格式是:datetime.timedelta(D[, S[, U]]),如'datetime.timedelta(1, 18306, 1)'

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值