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

Spring @Scheduled注解配置zone为EST时区未按预期执行问题

问题原因
  • 你的代码中@Scheduled注解zone参数使用的"EST"是过时的三字母时区缩写,Java 从1.1版本开始就不推荐使用这类缩写配置时区:一方面这类缩写存在多地区歧义(比如EST同时可指代美国东部标准时间、澳大利亚东部标准时间),解析时容易匹配到错误的时区规则;另一方面EST本身仅代表不含夏令时的标准时间,无法覆盖美国东部地区全年的夏令时切换需求。
  • 当三字母时区缩写解析失效时,Spring会 fallback 到JVM默认时区(你的服务运行环境默认是印度标准时间IST)做cron表达式计算,最终导致触发时间和预期不符。
解决方案

将zone参数的值替换为IANA标准时区ID America/New_York即可,修正后的代码如下:

@Scheduled(cron = "0 0 5 * * MON-FRI", zone = "America/New_York")
public void jobRunDaily() {
  logger.info("jobRunDaily : called");
  this.sendEmailDaily();
}
  • America/New_York是美国东部地区的官方标准IANA时区标识,会自动适配夏令时/冬令时切换,全年都会按照你预期的美国东部当地时间每周一到周五早5点触发任务。
  • 如果你需要查询其他地区的合法时区ID,可以在代码中执行TimeZone.getAvailableIDs()打印JVM支持的所有IANA时区列表做校验。
验证建议

你可以临时把cron表达式调整为距离当前时间1-2分钟的测试值,启动服务验证触发时间是否符合预期,避免等到正式执行时段才发现配置问题。


内容的提问来源于stack exchange,提问作者Aaina Arora

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 07:21:01