Cron 表达式翻译器 — 把 cron 表达式翻译成自然语言
把 cron 表达式翻译成自然语言。按你的本地时区显示接下来 5 次运行时间。支持标准 cron 和 Quartz 语法。
Cron to Human
Translate cron expressions to plain English. Works entirely in your browser — no uploads.
cron 表达式就是那种「大家都从别处抄、没人会凭记忆写」的格式。五个字段(分、时、日、月、周)第一次输入很简单,但一旦第二个字段需要步长值,或者「周」字段需要范围,查表就比推理更快。本工具就是干这事的 —— 粘贴表达式,读出中文解释,把「下次运行」时间复制到你本来就要放的地方去。
大多数人第一次用 cron 解释器时,最意外的地方是时区。cron 表达式里没有时区 —— 它只是 5 个数字。运行作业的守护进程有一个时区,解释器有一个时区(你浏览器的),而它们通常不一样。在开发者本地时间读作「工作日 9 点」的表达式,可能在另一国的服务器上以 UTC 17:00 触发,也可能在开发者的笔记本上以凌晨 2 点触发。本工具的「下次运行」列表按你浏览器的时区计算;如果实际作业跑在服务器上,那时间和服务器时钟对不上。
表达式翻译完之后,通常的下一步是判断这个调度本身合不合适。如果任务本意是每小时跑一次,但因为步长值读错一天只触发 12 次,那就修表达式。如果任务是为生成日报要在 UTC 0 点触发,就在解释前写明你打算用的时区。如果只是一个未来 24 小时内的一次性任务,那根本用不上 cron —— 用 Epoch/Date 转换器拿到一个时间戳,再传给 at 就行。
使用方法
粘贴一个 cron 表达式
输入或粘贴一个 5 字段的标准 cron(分 时 日 月 周)或一个 6/7 字段的 Quartz 表达式。边输入边校验,语法错误会就地标出。
阅读自然语言解析
每个字段单独一行展示含义。`0 9 * * 1-5` 会被读作「09:00,周一至周五」—— 不必再为范围或步长值费心猜测。
查看接下来 5 次运行时间
右侧面板列出接下来 5 次触发的时间,按浏览器本地时区计算。夏令时切换会被正确处理。
常见问题
支持 Quartz 语法(带秒的 6 字段)吗?
支持。粘贴一个 6 字段的 Quartz 表达式(秒在最前面),工具会自动检测格式。也支持带年份的 7 字段 Quartz 表达式。
「下次运行」用的是哪个时区?
你浏览器的本地时区。「下次运行」列表上方会显示 IANA 时区名(例如 'America/New_York')。服务器上的 cron 作业按服务器所在时区触发,不是你的时区。
为什么 `0 9 * * 1-5` 在我的服务器日志里不是工作日 9 点?
你的服务器多半在 UTC。在 'America/Los_Angeles' 的 9 点是 UTC 17:00,而 UTC 9 点在洛杉矶是凌晨 2 点。表达式本身没错 —— 变量是时区。
能解释 @daily、@reboot 这类特殊字符串吗?
可以。输入 `@daily`、`@hourly`、`@weekly`、`@monthly`、`@yearly` 或 `@reboot`,工具会把它们展开成等价的标准 cron 字段。
限制说明
- 不支持 spring/frost 语法Quartz 的特殊字符 L、W 和 #(最后一天、最近工作日、第 N 个周几)会被识别并解释,但「下次运行」列表不处理 W(最近工作日)—— 会回退为普通周几。
- 不支持 cron.d 风格的环境变量引用 shell 变量(PATH=、MAILTO=、*)的 cron 表达式不会被解析。只翻译时间字段本身。
- 夏令时切换会让「下次运行」偏移一小时对于安排在本地时间 02:30 的作业,「下次运行」列表可能跳过夏令时调快当晚的那一次。这与操作系统 cron 守护进程的实际行为一致。
平台说明
- macOS
- macOS 使用 vixie cron,当「日」与「周」都被设置时按 OR 解释(这个历史上的怪异行为)。本工具的解析与该行为一致。
- Linux
- 大多数 Linux 发行版搭载 cronie 或 vixie cron,都使用标准 5 字段语法。systemd 定时器(.timer 文件)使用另一种格式,本工具不处理。
- Windows
- Windows 没有原生 cron。最常见的移植是 WSL 的 cron 守护进程,使用 vixie 语法。PowerShell 的计划任务使用不同的 XML 格式。
- CLI
- 驱动本工具的同一套库以 Node.js 包(cronstrue)和 CLI 的形式提供。适合在构建日志或文档里嵌入人类可读的 cron。
- Web
- 完全在客户端运行。适合在把 cron 表达式粘进 crontab 之前,先从 README 或 Stack Overflow 答案里快速校验一下。