def parse_cron_field(field, min_val, max_val):
"""
解析 Cron 表达式的单个字段
:param field: Cron 字段(如 "*/10")
:param min_val: 字段的最小值(如秒字段的最小值是 0)
:param max_val: 字段的最大值(如秒字段的最大值是 59)
:return: 该字段的所有可能取值
"""
if field == "*":
return list(range(min_val, max_val + 1))
elif field.startswith("*/"):
step = int(field[2:])
return list(range(min_val, max_val + 1, step))
elif "-" in field:
start, end = map(int, field.split("-"))
return list(range(start, end + 1))
elif "," in field:
return [int(x) for x in field.split(",")]
else:
return [int(field)]
def count_daily_cron_executions(cron_expression):
"""
统计一个包含秒字段的 Cron 表达式每天会运行多少次
:param cron_expression: 包含秒字段的 Cron 表达式(6 个字段)
:return: 每天的运行次数
"""
fields = cron_expression.split()
if len(fields) != 6:
raise ValueError("Cron 表达式必须包含 6 个字段(秒 分 时 日 月 周)")
seconds = parse_cron_field(fields[0], 0, 59)
minutes = parse_cron_field(fields[1], 0, 59)
hours = parse_cron_field(fields[2], 0, 23)
return len(seconds) * len(minutes) * len(hours)
result = count_daily_cron_executions('0 */5 8-11 * * *')
print(result)