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

头脑风暴

我的服务 api 接受石英作业的 startDate 和要执行的作业的月份日期。在内部,我将其转换为 cron 表达式并保存在石英中。

例如,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 表的样子。

在此处输入图片说明

如您所见,time_zone_id 保存为 GMT-07:00,但是一旦 11 月 5 日开始夏令时,它必须是 GMT-08:00。否则我的石英作业会提前一小时启动。事实上,当我查询nextFireTime 时,我确实得到了 1510794000000,这确实是美国/洛杉矶 (PST) 时区的 2017 年 11 月 15 日星期三 17:00:00 (pm)

我们如何处理这个 time_zone_id 问题?

PS:我使用不具有的概念cronTriggerpreserveHourOfDayAcrossDaylightSavings由提供CalendarIntervalTrigger

斯里尼瓦斯

不要使用偏移量来表示时区。相反,您可以要求用户传入时区,例如“ 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

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何使用石英计划程序启动具有多个cron触发器的作业?

来自分类Dev

如何处理节省夏令时的浏览器兼容性问题

来自分类Dev

时区信息和夏令时

来自分类Dev

PHP夏令时错误的时区

来自分类Dev

JavaScript-检查夏令时的时区

来自分类Dev

Linux如何处理DST(夏令时?

来自分类Dev

使用Joda处理时区偏移过渡和夏令时

来自分类Dev

iOS-setDefaultTimeZone是否可以自动处理夏令时和时区偏移?

来自分类Dev

石英触发器不触发

来自分类Dev

如何获得正确的时区偏移量(进出夏令时)

来自分类Dev

如何获得正确的时区偏移量(进出夏令时)

来自分类Dev

如何在Dynamics CRM中的时区开始和结束夏令时?

来自分类Dev

英国夏令时-SimpleDateFormat时区无法识别BST

来自分类Dev

java.time:CET时区是否考虑夏令时?

来自分类Dev

确定时区是否支持夏令时

来自分类Dev

Google时区api显示错误的夏令时偏移

来自分类Dev

golang时区夏令时不起作用

来自分类Dev

解析时区并转换为夏令时

来自分类Dev

确定时区是否支持夏令时

来自分类Dev

日期计算-夏令时(DST)和时区问题-土耳其

来自分类Dev

如何判断是否是英国夏令时

来自分类Dev

如何使Outlook识别夏令时?

来自分类Dev

基于文件存在的石英触发器?

来自分类Dev

石英Cron触发器每2天运行一次

来自分类Dev

当服务器自动使用DST时,如何使用cron计划在不了解DST的应用程序上实现夏令时的脚本?

来自分类Dev

从夏令时过渡到“夏令时”时,“ CEST”时区更改与GMT偏移(不应该)

来自分类Dev

如何在没有Joda Time的Java 7中正确处理夏令时?

来自分类Dev

iCalendar夏令时

来自分类Dev

夏令时的Crontab

Related 相关文章

热门标签

归档