34 lines
955 B
Python
34 lines
955 B
Python
import re
|
|||
|
|
|
||
|
|
|
||
|
|
def convert_to_hours(time_str):
|
||
|
|
"""
|
||
|
|
将各种时间格式字符串转换为小时数
|
||
|
|
支持格式示例:
|
||
|
|
- "1 day, 1:49:15" (包含天数)
|
||
|
|
- "1:56:55" (小时:分钟:秒)
|
||
|
|
- "0:06:41" (分钟:秒)
|
||
|
|
- "14:11:36" (小时:分钟:秒)
|
||
|
|
"""
|
||
|
|
total_hours = 0.0
|
||
|
|
|
||
|
|
# 处理包含天数的部分
|
||
|
|
if "day" in time_str:
|
||
|
|
days_part, time_part = time_str.split(", ")
|
||
|
|
days = float(re.search(r"\d+", days_part).group())
|
||
|
|
total_hours += days * 24
|
||
|
|
time_str = time_part
|
||
|
|
|
||
|
|
# 分割时间部分
|
||
|
|
parts = list(map(float, time_str.split(":")))
|
||
|
|
|
||
|
|
# 根据时间部分长度计算
|
||
|
|
if len(parts) == 3: # 时:分:秒
|
||
|
|
total_hours += parts[0] + parts[1] / 60 + parts[2] / 3600
|
||
|
|
elif len(parts) == 2: # 分:秒
|
||
|
|
total_hours += parts[0] / 60 + parts[1] / 3600
|
||
|
|
elif len(parts) == 1: # 仅秒
|
||
|
|
total_hours += parts[0] / 3600
|
||
|
|
|
||
|
|
return round(total_hours, 2)
|