Along with #19475, it turned out that CronTrigger hard-codes the system ZoneId by default while it should really take it from TriggerContext.getClock().getZone() - which is the system ZoneId by default as well but participates in scheduler-wide Clock customization (which we introduced in 5.3).