python中时间间隔默认单位_Python中的自然时间间隔处理

本文介绍了一段Python代码,该代码能够将包含多种时间单位(如年、月、周等)的文本字符串解析并转换为对应的总秒数。通过正则表达式处理输入,并使用datetime模块计算从当前时间到指定时间的总秒数。

在这里,它被转换成一个程序:import re, datetime

def get_seconds(text):

splitted_input = filter(None, re.split('[, ]', text))

assert len(splitted_input) % 2 == 0

grouped_input = zip(*(iter(splitted_input),) * 2)

# ⬆︎ This is tricky; see https://stackoverflow.com/questions/1624883/alternative-way-to-split-a-list-into-groups-of-n

kwargs = {

'year':0,

'month':0,

'day':0,

'hour':0,

'minute':0,

'second':0,

'microsecond':0,

}

for n, unit in grouped_input:

n = int(n)

if unit.startswith('y'):

kwargs['year'] += n

elif unit.startswith('mo'):

kwargs['month'] += n

elif unit.startswith('w'):

kwargs['day'] += 7*n

elif unit.startswith('d'):

kwargs['day'] += n

elif unit.startswith('h'):

kwargs['hour'] += n

elif unit.startswith('m'):

kwargs['minute'] += n

elif unit.startswith('s'):

kwargs['second'] += n

else:

assert False, unit

for k, v in kwargs:

kwargs[k] += getattr(now, k)

now = datetime.datetime.now()

return (datetime.datetime(**kwargs) - now).total_seconds()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值