跳到正文
CronExplain

每月最后一天的 Cron 表达式

结账、归档数据等月末任务需要在每月最后一天运行,不论当月有 28、29、30 还是 31 天。Quartz、Spring 和 AWS 用 L 表示;标准 crontab 做不到,常见做法是在 28–31 日运行并在脚本中检查日期。

各方言中的同一调度

方言表达式
标准 crontab无法表示:不支持 L、W 和 #。
6 字段(含秒)无法表示:不支持 L、W 和 #。
Quartz0 0 0 L * ?
Spring0 0 0 L * *
AWS EventBridgecron(0 0 L * ? *)
GitHub Actions无法表示:不支持 L、W 和 #。
Kubernetes CronJob无法表示:不支持 L、W 和 #。

含义

Quartz:第一位为秒,可选年字段,1 = 星期日。“日”和“星期”中必须恰好有一个为“?”。支持 L、W 和 #。

✓ 有效 · 含义

在00:00, 限每月的最后一天

预设

接下来 10 次运行

#UTC 时间你的本地时间
1——
2——
3——
4——
5——
6——
7——
8——
9——
10——

其他方言中的同一调度

  • 标准 crontab无法表示:不支持 L、W 和 #。
  • AWS EventBridgecron(0 0 L * ? *)EventBridge 规则使用 UTC。
  • Spring0 0 0 L * *

可视化生成器

为每个字段选择取值。生成器输出标准的五字段表达式,使用时会自动转换为当前选择的方言。

分钟
小时
日
月
星期
0 9 * * 1-5

这个表达式如何工作

表达式 0 0 0 L * ? 使用 Quartz 语法编写。从左到右逐个字段阅读:每个字段都会进一步限定任务可以运行的时间,当前时间与所有字段都匹配时调度器就会启动任务。用通俗的话说,它的含义是:在00:00, 限每月的最后一天。

适配你的调度器

crontab、Kubernetes 和 GitHub Actions 使用五字段格式。Quartz 和 Spring 需要在前面加上秒字段,Quartz 和 AWS 还要求两个日期字段之一为“?”——上方表格已经处理好了这些差异。请记住,GitHub Actions 和 AWS EventBridge 规则按 UTC 运行,而 crontab 使用服务器所在时区,因此同一个表达式在不同环境下可能在不同的本地时间触发。

部署前先检查

把最终的表达式粘贴到上方的解析器中,并选择实际运行它的机器所在的时区。接下来运行时间列表会准确显示任务何时启动,包括夏令时切换前后,让你在上线前就发现相差一小时之类的错误。

常见问题

每月最后一天的 Cron 表达式是什么?
在标准 crontab 中是 无法直接表示(见上方表格)。在 Quartz 中是 0 0 0 L * ?,在 AWS EventBridge 中是 cron(0 0 L * ? *)。
它会按哪个时区运行?
crontab 使用服务器本地时区,Kubernetes 使用控制器时区或 spec.timeZone,GitHub Actions 和 AWS EventBridge 规则使用 UTC。
如何测试这个调度?
把它粘贴到本页的解析器中:它会显示任意时区下接下来 10 次运行时间,并在旁边显示你的本地时间。
可以稍作修改吗?
可以。在工具中编辑表达式或使用可视化生成器,文字说明和运行时间会随输入实时更新。