You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

bash中如何实现过滤15分钟及以内时长字符串的条件判断逻辑

实现思路

直接将所有时长字符串统一转换为秒级数值,和15分钟对应的900秒做对比,逻辑清晰且扩展性强,避免原写法的逻辑漏洞(原if 's' or 'm' not in 'string'判断逻辑存在运算符优先级错误,永远返回真,无法正常工作)。

  • 预设单位到秒的映射规则:s=1秒、m=60秒、h=3600秒、d=86400秒
  • 拆分时长字符串的数字部分和单位部分
  • 计算总秒数后和阈值对比即可
代码示例(Python)

基础实现

def duration_to_sec(dur_str):
    unit_map = {'s':1, 'm':60, 'h':3600, 'd':86400}
    num = int(''.join(filter(str.isdigit, dur_str)))
    unit = ''.join(filter(str.isalpha, dur_str)).lower()
    return num * unit_map[unit]

# 业务判断逻辑
if duration_to_sec(你的时长字符串) >= 900:
    break
# 低于15分钟的后续执行逻辑

带异常兼容的严谨实现

用正则匹配解析,避免非法输入导致报错:

import re
def duration_to_sec(dur_str):
    unit_map = {'s':1, 'm':60, 'h':3600, 'd':86400}
    # 严格匹配数字+单位的格式
    match = re.fullmatch(r'(\d+)([smhd])', dur_str.strip().lower())
    if not match:
        # 非法输入默认按超过阈值处理,可根据需求调整
        return 9999
    num = int(match.group(1))
    unit = match.group(2)
    return num * unit_map[unit]

if duration_to_sec(你的时长字符串) >= 900:
    break

内容的提问来源于stack exchange,提问作者solarflare

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 15:18:01