You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用CronExpression.next获取周日执行时间却返回周一的原因

问题原因与解决方案

你的问题核心在于Cron表达式星期字段的编号规则差异,不同的Cron实现对星期的数字定义不一样:

  • 你使用的CronExpression(Spring Framework中的实现),星期字段的数字定义是:1=周一,2=周二……7=周日,同时也支持英文缩写MON到SUN。
  • 而你误以为数字1代表周日,这是混淆了其他Cron实现(比如Quartz)的规则——Quartz中1=周日,2=周一……7=周六。

你的表达式0 0 1 ? * 1,按照Spring的规则,最后一位的1就是指定每周一1点执行,所以返回2024-04-15T01:00+09:00[Asia/Seoul](2024年4月15日是周一)是符合表达式实际逻辑的,和你的预期不符是因为对星期字段的规则理解错了。

修正方案

如果要实现每周日1点执行,把表达式改成以下两种之一即可:

  • 使用数字:0 0 1 ? * 7
  • 使用英文缩写:0 0 1 ? * SUN

内容的提问来源于stack exchange,提问作者jisu kim

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 01:14:56