【发布时间】:2018-04-16 21:08:23
【问题描述】:
我的服务 api 接受石英作业的 startDate 和要执行的作业的月份日期。 在内部,我将其转换为 cron 表达式并保存在石英中。
例如,PST 中的用户今天(2017 年 11 月 3 日)提交了一个工作请求,如下所示。
{
"start": "2017-11-03T18:00:00-07:00",
"dayOfMonth" : 15
}
在这里,用户想要安排从 2017 年 11 月 3 日开始在每月 15 日下午 6 点触发的作业。所以第一天的石英将在 2017 年 11 月 15 日开火。
这就是上述请求如何转换为 cron 表达式 0 0 18 15 * ? * 的方式,这是正确的。
下面是 QRTZ_CRON_TRIGGERS 表的样子。
如您所见,time_zone_id 保存为 GMT-07:00,但在 11 月 5 日夏令时开始后,它必须为 GMT-08:00。否则我的石英工作会提前一小时启动。事实上,当我查询 nextFireTime 时,我确实得到了 1510794000000,这确实是 2017 年 11 月 15 日星期三 17:00:00(下午)在时区美国/洛杉矶(PST)
我们如何处理这个 time_zone_id 问题?
P.S:我正在使用 cronTrigger,它没有 CalendarIntervalTrigger 提供的 preserveHourOfDayAcrossDaylightSavings 的概念。
【问题讨论】:
标签: quartz-scheduler dst quartz crontrigger