当前位置: 首页 > 知识库问答 >
问题:

如何使用Quartz在特定时区的特定时间执行一次作业

丁高峯
2023-03-14

我试图设置一个作业在一个用户使用Quartz的时区的特定时间的单一执行。现在,开箱即用,告诉调度器执行时区中的任何内容的唯一方法是通过cronschedule。对于Coors,我可能会将datetime转换为cron表达式,然后在第一次成功执行后立即停止触发器,但这有点难闻。

谢谢,

共有1个答案

赖渊
2023-03-14

可以使用所需的时区更新现有触发器并重新安排作业:

http://quartz-scheduler.org/documentation/quartz-2.x/cookbook/updatetrigger

  // retrieve the trigger
  Trigger oldTrigger = sched.getTrigger(triggerKey("oldTrigger", "group1");

  // obtain a builder that would produce the trigger
  TriggerBuilder tb = oldTrigger.getTriggerBuilder();

  // update the schedule associated with the builder, and build the new trigger
  // (other builder methods could be called, to change the trigger in any desired way)

  Trigger newTrigger = tb.withSchedule(simpleSchedule()
 .withIntervalInSeconds(10)
 .withRepeatCount(10)
 .inTimeZone(TimeZone.getTimeZone("America/Los_Angeles"))
 .build();

 sched.rescheduleJob(oldTrigger.getKey(), newTrigger);
 类似资料:
  • 我正在试用Quartz调度器,并使用Maven使其与Spring一起工作。 我需要做的是将Quartz配置为存储作业,以便在计划的时间内执行作业。据我所知,石英中有两种类型的触发器,Simple和Cron。我还发现石英中有一种叫做JobStore的东西。我在某种程度上对它进行了配置。 有人能给我一个关于如何设置Quartz JobStore的好的参考资料吗?帮了大忙,谢谢。

  • 问题内容: 我研究了,但是示例仅涉及使其重现。我正在寻找一种类似的功能,例如说“每个星期一的凌晨1点执行此任务”的功能。 问题答案: 感谢Patrick Altman,最近发布的1.0.3版现在支持此功能。 例:

  • 问题内容: 我正在使用JavaScript类,并尝试使用方法获取当前日期。但显然是加载系统日期和时间。我正在从印度运行代码,但我想使用相同的方法来获取英国的日期和时间。我怎样才能做到这一点? 问题答案: 如果您知道UTC偏移量,则可以使用以下函数传递它并获取时间:

  • 例如,我想编写一个Java程序,在每天上午12点打印“Hello World”,如何使用Quartz调度器实现这一点? 这样地?我应该把打印“hello world”方法放在哪里?

  • 问题内容: 我研究了,但是示例仅涉及使其重现。我正在寻找一种类似的功能,例如说“每个星期一的凌晨1点执行此任务”的功能。 问题答案: 感谢Patrick Altman,最近发布的1.0.3版现在支持此功能。 例: 请参阅更改日志以获取更多信息: http://celeryproject.org/docs/changelog.html

  • 问题内容: 如何设置在特定时间仅运行一次文件?替代方法之一是,但并非所有标准托管计划的用户都可以访问。因此,我想知道是否有办法使用? 问题答案: 尝试在2011年3月30日午夜执行命令: 警告 :如评论所述,cron的标准/默认实现不支持 year 列。请参考下面的TomOnTime答案,以了解将来在cron的标准实现中在特定时间运行脚本的正确方法。