日期、时间与时区

Cron 表达式工具

解析、生成、解释 Cron 表达式,预览未来执行时间并支持时区切换、常用模板、可视化生成、本地历史和导出。适合调度任务排期、CI/CD 定时触发、备份策略、报表生成、缓存刷新、提醒推送和服务自动化巡检的核对。

  • 同时支持 5 字段标准 Cron 和带秒的 6 字段 Cron,并实时给出自然语言解释
  • 按所选时区计算未来 5、10、20 或 50 次执行时间,并显示本地时间与 UTC
  • 内置常用模板和可视化生成器,每分钟、每天、每周、每月、每年都能一键生成
  • 提供 Linux crontab、GitHub Actions、Cloudflare Workers、Kubernetes 和 Quartz 的差异提示
工具/Cron 表达式工具
有效5 字段

还没有历史记录。

在09:00, 星期一至星期五

字段当前值取值范围
分钟00 到 59
小时90 到 23
日期*1 到 31
月份*1 到 12
星期1-50 到 6(0 与 7 都是周日)
时区
条数
#本地时间UTC距现在
12026-06-02 09:002026-06-02 09:00约 17 h
22026-06-03 09:002026-06-03 09:00约 2 d
32026-06-04 09:002026-06-04 09:00约 3 d
42026-06-05 09:002026-06-05 09:00约 4 d
52026-06-08 09:002026-06-08 09:00约 7 d
快捷操作

语法说明

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 表达式同时呈现为自然语言、字段拆解和未来执行时间,方便排期、调试和上线前核对。

  1. 01

    解析与校验 5 / 6 字段 Cron

    自动识别 5 字段标准 Cron 与 6 字段带秒 Cron,错误表达式会立即给出可读提示。

  2. 02

    当前语言的自然语言解释

    基于 cronstrue 用页面当前语言输出可读说明,便于团队评审、文档记录和工单沟通。

  3. 03

    逐字段含义拆解

    分别说明秒、分钟、小时、日期、月份、星期的取值范围与当前匹配规则。

  4. 04

    按时区计算未来执行

    按浏览器本地、UTC 或任意 IANA 时区计算未来 5、10、20 或 50 次执行时间。

  5. 05

    常用模板与可视化生成器

    内置每分钟、每小时、工作日、每周、每月、每年等模板,并支持按时间维度生成表达式。

  6. 06

    本地历史与多格式导出

    最近使用过的表达式保存在浏览器本地,未来执行时间可导出为 TXT、CSV 或 JSON。

如何使用

推荐先确认字段含义,再用预览的未来执行时间和目标平台时区核对,避免上线后才发现节奏不对。

  1. 01

    在输入框写入 Cron 表达式,例如 0 9 * * 1-5;不熟悉时可以先点击常用模板。

  2. 02

    查看自然语言解释和字段拆解,确认表达式真正表达的节奏与你的预期一致。

  3. 03

    选择目标时区与显示条数,根据未来执行时间列表核对是否落在期望窗口内。

  4. 04

    需要更复杂规则时,打开可视化生成器,按分钟、小时、每天、每周、每月或每年生成表达式。

  5. 05

    满意后复制表达式或导出执行时间列表,并把当前规则保存到本地历史以便日后回看。

功能说明

工具围绕实际任务调度场景设计,让 Cron 不再只是一串看不懂的星号。

  • 同时识别 5 字段与 6 字段 Cron,错误的字段数量会立即给出说明,而不是默默按错的格式解释。
  • 检测到 ? L W # 等 Quartz 风格符号时会给出提示,避免在 GitHub Actions、Kubernetes 等非 Quartz 环境直接复用。
  • 同时使用日期和星期两个字段时会给出注意,提示多数平台采用任一字段命中即触发的语义,少数则要求两个字段都命中。
  • 未来执行时间显示本地时间、UTC、与现在的相对时长,方便核对夏令时和跨日行为。
  • 时区切换会重新计算执行时间,便于排查 GitHub Actions、Cloudflare Workers 等 UTC 平台的时差问题。
  • 可视化生成器提供分钟、小时、每天、每周、每月、每年六种维度,按需选择星期或月份。
  • 所有解析、计算、复制和导出都在浏览器本地完成,表达式不会上传到任何服务器。

适合哪些场景

Cron 是定时任务的通用语言,凡是按周期触发的工作都可能用到它。

  1. 后端定时任务排期

    为账单结算、订阅续费、报表生成、清理脚本和缓存预热定义触发节奏。

  2. CI/CD 与构建巡检

    在 GitHub Actions、GitLab CI、Jenkins 中按 UTC 排定每日构建、夜间测试和依赖扫描。

  3. 数据同步与归档

    为数据库同步、日志归档、ETL 调度、备份策略和数据仓库刷新设定执行窗口。

  4. 运维巡检与提醒

    安排服务健康检查、磁盘告警、证书到期扫描和值班提醒推送。

  5. 消息推送与运营触达

    为早报、晨会摘要、活动开场、促销结束、用户召回邮件设定触发时间。

  6. 云原生与容器调度

    为 Kubernetes CronJob、Cloudflare Workers、Vercel Cron、Lambda Schedule 校对表达式与时区。

  7. 物联网与边缘任务

    为采集设备、网关上报、缓存清理和远程升级窗口安排定时计划。

  8. 团队规范与代码评审

    在文档、PR 描述和工单中给出可读的 Cron 说明,避免每个人现猜节奏。

延伸阅读

如果要把未来执行时间换算成 Unix 秒或毫秒,可以使用 时间戳转换 。需要把同一个执行时间换算到多个城市本地时间时,使用 时区转换器 会更直观。想盯着多个地区的当前时间确认调度窗口,可以打开 世界时钟 同时对照。

使用建议

可靠的定时任务依赖明确的时区、可读的节奏说明和真实的运行验证。

  • 上线前先用未来执行时间预览核对节奏,不要只看自然语言解释。
  • 跨时区团队建议在文档中同时记录 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 表达式可能少执行一次或多执行一次,建议预览跨过切换日的执行时间,确认是否符合预期。

更多相关工具

可以继续使用时间戳转换、时区转换、世界时钟和日期计算工具,处理日志、排期、账单周期和跨时区协作。