Cron 表达式工具
解析、生成、解释 Cron 表达式,预览未来执行时间并支持时区切换、常用模板、可视化生成、本地历史和导出。适合调度任务排期、CI/CD 定时触发、备份策略、报表生成、缓存刷新、提醒推送和服务自动化巡检的核对。
- 同时支持 5 字段标准 Cron 和带秒的 6 字段 Cron,并实时给出自然语言解释
- 按所选时区计算未来 5、10、20 或 50 次执行时间,并显示本地时间与 UTC
- 内置常用模板和可视化生成器,每分钟、每天、每周、每月、每年都能一键生成
- 提供 Linux crontab、GitHub Actions、Cloudflare Workers、Kubernetes 和 Quartz 的差异提示
还没有历史记录。
在09:00, 星期一至星期五
| 字段 | 当前值 | 取值范围 |
|---|---|---|
| 分钟 | 0 | 0 到 59 |
| 小时 | 9 | 0 到 23 |
| 日期 | * | 1 到 31 |
| 月份 | * | 1 到 12 |
| 星期 | 1-5 | 0 到 6(0 与 7 都是周日) |
语法说明
Cron 各字段共用同一套符号,熟悉它们就能避免绝大多数手写错误。
- * 通配符
- 匹配该字段的所有取值。例如 * * * * * 表示每分钟触发一次。
- , 枚举值
- 在同一字段内列出多个具体值。例如 0 9,12,18 * * * 表示每天 9 点、12 点和 18 点各触发一次。
- - 连续区间
- 匹配一段连续的取值范围,包含两端。例如 0 9 * * 1-5 表示每个工作日早上 9 点触发。
- / 步长间隔
- 从起始值或区间起点开始按固定步长匹配。例如 */15 * * * * 表示每 15 分钟一次。
- ? Quartz 占位符
- 日期或星期字段的占位符,表示该位置不参与匹配,只有 Quartz 类调度器支持。例如 0 0 12 ? * MON 表示每周一中午触发。
- L Quartz 末位
- 代表该字段的最后一个取值,例如月末或最后一个周五,只有 Quartz 类调度器支持。例如 0 0 12 L * ? 表示每月最后一天的正午触发。
- 0/7 星期值约定
- 星期字段中 0 和 7 都代表周日,多数实现也接受 SUN 到 SAT 的英文别名。例如 0 0 * * 0 与 0 0 * * 7 完全等价,都是每周日 0 点触发。
平台差异提示
不同运行环境对 Cron 语法、时区和字段数量的支持并不一致,部署前请以目标平台文档为准。
- Linux crontab
- 使用 5 字段标准 Cron,按系统时区运行。建议在 crontab 中显式声明 SHELL、PATH 和 MAILTO,避免与登录 shell 行为不一致。
- GitHub Actions
- 只接受 5 字段标准 Cron,并按 UTC 运行。计划任务在仓库无活动时可能被延迟或取消,关键时序任务建议有外部触发兜底。
- Cloudflare Workers Cron Triggers
- 使用 5 字段标准 Cron,按 UTC 运行,且必须每个表达式都在 Workers 设置中显式启用。最小粒度为 1 分钟。
- Kubernetes CronJob
- 使用 5 字段标准 Cron,spec.timeZone 字段可指定 IANA 时区。注意 startingDeadlineSeconds、concurrencyPolicy 和历史保留策略对实际执行的影响。
- Quartz Scheduler
- 使用 6 或 7 字段语法,并提供 ? L W # 等扩展。日期与星期字段不能同时为通配符,需要其中一个使用 ?。本工具按通用 Cron 解析,Quartz 专属语法请使用其官方校验器。
功能简介
把一段 Cron 表达式同时呈现为自然语言、字段拆解和未来执行时间,方便排期、调试和上线前核对。
- 01
解析与校验 5 / 6 字段 Cron
自动识别 5 字段标准 Cron 与 6 字段带秒 Cron,错误表达式会立即给出可读提示。
- 02
当前语言的自然语言解释
基于 cronstrue 用页面当前语言输出可读说明,便于团队评审、文档记录和工单沟通。
- 03
逐字段含义拆解
分别说明秒、分钟、小时、日期、月份、星期的取值范围与当前匹配规则。
- 04
按时区计算未来执行
按浏览器本地、UTC 或任意 IANA 时区计算未来 5、10、20 或 50 次执行时间。
- 05
常用模板与可视化生成器
内置每分钟、每小时、工作日、每周、每月、每年等模板,并支持按时间维度生成表达式。
- 06
本地历史与多格式导出
最近使用过的表达式保存在浏览器本地,未来执行时间可导出为 TXT、CSV 或 JSON。
如何使用
推荐先确认字段含义,再用预览的未来执行时间和目标平台时区核对,避免上线后才发现节奏不对。
- 01
在输入框写入 Cron 表达式,例如 0 9 * * 1-5;不熟悉时可以先点击常用模板。
- 02
查看自然语言解释和字段拆解,确认表达式真正表达的节奏与你的预期一致。
- 03
选择目标时区与显示条数,根据未来执行时间列表核对是否落在期望窗口内。
- 04
需要更复杂规则时,打开可视化生成器,按分钟、小时、每天、每周、每月或每年生成表达式。
- 05
满意后复制表达式或导出执行时间列表,并把当前规则保存到本地历史以便日后回看。
功能说明
工具围绕实际任务调度场景设计,让 Cron 不再只是一串看不懂的星号。
- 同时识别 5 字段与 6 字段 Cron,错误的字段数量会立即给出说明,而不是默默按错的格式解释。
- 检测到 ? L W # 等 Quartz 风格符号时会给出提示,避免在 GitHub Actions、Kubernetes 等非 Quartz 环境直接复用。
- 同时使用日期和星期两个字段时会给出注意,提示多数平台采用任一字段命中即触发的语义,少数则要求两个字段都命中。
- 未来执行时间显示本地时间、UTC、与现在的相对时长,方便核对夏令时和跨日行为。
- 时区切换会重新计算执行时间,便于排查 GitHub Actions、Cloudflare Workers 等 UTC 平台的时差问题。
- 可视化生成器提供分钟、小时、每天、每周、每月、每年六种维度,按需选择星期或月份。
- 所有解析、计算、复制和导出都在浏览器本地完成,表达式不会上传到任何服务器。
适合哪些场景
Cron 是定时任务的通用语言,凡是按周期触发的工作都可能用到它。
-
后端定时任务排期
为账单结算、订阅续费、报表生成、清理脚本和缓存预热定义触发节奏。
-
CI/CD 与构建巡检
在 GitHub Actions、GitLab CI、Jenkins 中按 UTC 排定每日构建、夜间测试和依赖扫描。
-
数据同步与归档
为数据库同步、日志归档、ETL 调度、备份策略和数据仓库刷新设定执行窗口。
-
运维巡检与提醒
安排服务健康检查、磁盘告警、证书到期扫描和值班提醒推送。
-
消息推送与运营触达
为早报、晨会摘要、活动开场、促销结束、用户召回邮件设定触发时间。
-
云原生与容器调度
为 Kubernetes CronJob、Cloudflare Workers、Vercel Cron、Lambda Schedule 校对表达式与时区。
-
物联网与边缘任务
为采集设备、网关上报、缓存清理和远程升级窗口安排定时计划。
-
团队规范与代码评审
在文档、PR 描述和工单中给出可读的 Cron 说明,避免每个人现猜节奏。
使用建议
可靠的定时任务依赖明确的时区、可读的节奏说明和真实的运行验证。
- 上线前先用未来执行时间预览核对节奏,不要只看自然语言解释。
- 跨时区团队建议在文档中同时记录 Cron 表达式、目标时区和一两个具体执行时间样例。
- GitHub Actions、Cloudflare Workers 等按 UTC 运行的平台,要把目标本地时间换算后再写表达式。
- 日期与星期同时配置时,先查阅目标平台文档,确认是任一字段命中就触发,还是两个字段都命中才触发。
- 高频率任务(如每分钟)请结合上游负载评估幂等性,避免任务堆积。
- 需要复杂规则时,把表达式保存到代码仓库或配置中心,配上注释解释意图。
边界与注意事项
Cron 是一个表达式语言,不同实现的细节并不一致;本工具只解释表达式,不会真正创建定时任务。
- 本工具仅做解析与预览,不会在任何平台真正注册或触发任务。
- GitHub Actions、Cloudflare Workers 等平台只接受 5 字段 Cron 并按 UTC 运行,6 字段(含秒)在这些平台不可用。
- Quartz 的 ? L W # 等扩展语法在多数通用 Cron 解析器中不可用,目标若为 Quartz 请同时使用其官方校验器。
- 夏令时切换时,跨过缺失或重复的一小时可能导致任务执行次数与直觉不同,请预览跨日期的执行时间核对。
- 同时设置日期与星期字段时,不同平台的匹配语义不一致,请以目标文档为准。
- 未来执行时间基于浏览器或所选 IANA 时区计算,并不代表生产环境的实际触发,仍需在目标平台再做一次回归验证。
常见问题
关于字段、时区、平台兼容性、Quartz 与历史保存的常见问题。
为什么有的 Cron 是 5 字段,有的是 6 字段?
传统 Unix crontab 使用 5 字段(分钟、小时、日、月、星期)。Quartz、Spring、cron-parser 等支持 6 字段,会在最前面增加秒字段。本工具会根据字段数量自动识别。
为什么解析失败?
通常是字段数量不对、取值越界,或者使用了当前运行环境不支持的符号(例如 Quartz 的 ? L W #)。可以参考字段范围和语法说明逐字段排查。
0 0 * * 0 与 0 0 * * 7 是一样的吗?
一样。星期字段中 0 和 7 都表示周日,多数实现还支持 SUN–SAT 别名。
同时配置日期和星期会怎样?
多数 Unix 实现采用任一字段命中即触发的语义,少数实现要求两个字段都命中才触发。请以目标平台文档为准,必要时把规则拆成两条 Cron。
GitHub Actions 为什么我的 Cron 不准时?
GitHub Actions 使用 UTC,并在高峰期可能延迟或跳过执行;仓库长期无活动也可能被暂停调度。关键任务建议有外部触发或重试机制。
本工具会真的帮我创建定时任务吗?
不会。它只在浏览器内解析、解释和预览执行时间,不会调用任何平台 API,也不会上传表达式。
历史记录会被上传吗?
不会。历史保存在浏览器 localStorage,仅在你当前浏览器与域名下可见。可以随时删除单条或清空全部历史。
为什么夏令时切换时执行次数变了?
夏令时切换会跳过或重复一段时间。对应那一小时内的 Cron 表达式可能少执行一次或多执行一次,建议预览跨过切换日的执行时间,确认是否符合预期。
更多相关工具
可以继续使用时间戳转换、时区转换、世界时钟和日期计算工具,处理日志、排期、账单周期和跨时区协作。