#spring #cron #scheduled-tasks #spring-annotations
Вопрос:
Я пытаюсь создать планировщик для запуска в любом часовом поясе. Для этого я добавил аннотацию @Scheduled к запланированному методу. Метод приведен ниже. Я хочу, чтобы этот метод запускался ежедневно в 05:00 утра по восточному времени с понедельника по пятницу, но он работает в 3:30 утра по восточному времени (6:00 вечера по восточному времени).
@Scheduled(cron = "0 0 5 * * MON-FRI", zone = "EST")
public void jobRunDaily() {
logger.info("jobRunDaily : called");
this.sendEmailDaily();
}
Комментарии:
1. Попробуйте использовать зону в формате contient/region что-то вроде «Америка/Нью-Йорк».
2. Пожалуйста, проясните вашу конкретную проблему или предоставьте дополнительные сведения, чтобы точно указать, что вам нужно. Поскольку это написано в настоящее время, трудно точно сказать, о чем вы просите.
Ответ №1:
Как описано в документации, zone
принимает идентификаторы, действительные для TimeZone.getTimeZone(String)
.
В TimeZone
документации вы найдете следующее для такого метода:
идентификатор часового пояса, либо аббревиатура, такая как «PST», полное имя, такое как «Америка/Лос_Ангелес», либо пользовательский идентификатор, такой как «GMT-8:00». Обратите внимание, что поддержка сокращений предназначена только для совместимости с JDK 1.1.x, и следует использовать полные имена.
Это означает, что вместо вашей аббревиатуры «EST» следует использовать полные имена.