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

如何处理cron触发器的石英夏时制用户时区?

邵昆琦
2023-03-14

我的服务api接收quartz作业的startDate和要执行的作业的day。在内部,我将其转换为cron表达式并保存在Quartz中。

例如,PST中的一个用户今天(2017年11月3日)提交了一个作业请求,如下所示。

{
"start": "2017-11-03T18:00:00-07:00",
"dayOfMonth" : 15
}

在这里,用户希望从2017-11-03开始,在每月15日下午6点启动一个工作。所以石英的第一天将在2017-11-15。以上请求是如何转换为cron表达式0 0 18 15*的?*,这是正确的。下面是QRTZ_CRON_TRIGGERS表的外观。

共有1个答案

谢豪
2023-03-14

不要使用偏移量表示时区。相反,您可以要求用户输入时区,如“America/los_Angeles”。然后您可以使用http://www.quartz-scheduler.org/api/2.2.1/org/quartz/cronschedulebuilder.html#intimezone(java.util.timezone)创建具有适当时区的触发器。

inTimeZone(TimeZone.getTimeZone("USER_ENTERED_VALUE")

最后,当您查看QRTZ_CRON_TRIGGERS表时,TIME_ZONE_ID的值将是America/los_Angeles

 类似资料:
  • 在我的网站中,用户A创建了一个从上午9:00开始的事件。我将该时间转换为GMT,这样,如果用户B在两小时前的不同时区看到该事件,它可以转换为用户B的时区,并显示该事件在11:00AM开始。 我唯一的想法是,当我得到如下所示的时区偏移量时,我是否应该总是将日期设置为一月,以便无论实际月份如何,我总是得到相同的时区偏移量?或者有没有更好的方法来处理这件事?

  • 我有两个节点具有相同的Quartz调度器。JobStore具有作业的唯一触发器,它每5秒执行一次,处理该作业需要一秒。

  • 我们使用quartz调度器创建一个带有触发器名称和触发器组的触发器,它将在15分钟的间隔被触发。 我们希望在任何时间点手动触发时间表。因此,我们所做的就是获取与我们创建的计划相关联的作业的触发键细节,并尝试使用以下API触发作业。 用上面提到的API激发作业时(即尝试手动激发作业)的Quartz日志: 能不能有人请让我知道我们如何才能使时间表是触发与原来的工作相关联的触发器。

  • 问题内容: 有没有一种方法可以删除带有特定作业的预定触发器?似乎删除触发器的唯一方法是删除整个作业,然后重新注册该作业并触发。 我有一份可能有100多个触发器的作业,我真的不想删除该作业,而只需要删除1个触发器就重新注册所有触发器。 另外,是否有一种方法可以在配置触发器后立即停止调度程序执行作业? 谢谢 问题答案: 尝试 这接受触发器和组名作为参数,并且只会删除指定的触发器,而不是作业。 Quar

  • 我想用quartz scheduler使用jdbc数据存储立即执行作业~。然而,即使我使用now()或调用triggerjob进行调度,在调度和触发器fire之间也有20-30秒的延迟。 我尝试用一个简单的触发器执行作业: 并且我还尝试用调度程序触发: 下面是显示延迟的侦听器日志。

  • 我如何暂停我的石英触发器,并在第二天在其指定的开始时间开始它?为(如)。我的cron表达式是*0/20 15-00**?所以当我暂停扳机时,它应该在第二天15:00开始。