mirror of
https://github.com/LiteyukiStudio/LiteyukiBot.git
synced 2024-11-13 19:07:54 +08:00
42 lines
969 B
Python
42 lines
969 B
Python
def convert_duration(text: str, default) -> float:
|
|
"""
|
|
转换自然语言时间为秒数
|
|
Args:
|
|
text: 1d2h3m
|
|
default: 出错时返回
|
|
|
|
Returns:
|
|
float: 总秒数
|
|
"""
|
|
units = {
|
|
"d" : 86400,
|
|
"h" : 3600,
|
|
"m" : 60,
|
|
"s" : 1,
|
|
"ms": 0.001
|
|
}
|
|
|
|
duration = 0
|
|
current_number = ''
|
|
current_unit = ''
|
|
try:
|
|
for char in text:
|
|
if char.isdigit():
|
|
current_number += char
|
|
else:
|
|
if current_number:
|
|
duration += int(current_number) * units[current_unit]
|
|
current_number = ''
|
|
if char in units:
|
|
current_unit = char
|
|
else:
|
|
current_unit = ''
|
|
|
|
if current_number:
|
|
duration += int(current_number) * units[current_unit]
|
|
|
|
return duration
|
|
|
|
except:
|
|
return default
|