我的服務api需要在startDate中爲石英作業和月份的日期執行作業。 在內部,我將其轉換爲cron表達式並保存在石英中。如何處理石英用於cron觸發器的夏令時用戶時區?
例如,PST中的用戶今天(2017年11月3日)提交了一份工作請求,如下所示。
{
"start": "2017-11-03T18:00:00-07:00",
"dayOfMonth" : 15
}
在這裏,用戶希望在下午6時安排在每個月的15日是火災工作,從2017年11月3日開始。所以第一天的石英火將於2017年11月15日開始。 這是如何將上述請求轉換爲cron表達式0 0 18 15 * ? *
,這是正確的。 以下是QRTZ_CRON_TRIGGERS表的外觀。
你可能注意到了,time_zone_id保存爲格林尼治標準時間07:00,但一旦夏令踢在11月5日,它必須是GMT-08:00。否則我的石英工作會提前一小時開火。事實上,當我查詢nextFireTime,我得到15107.94億這的確是週三2017年11月15日17:00:00(PM)的時區美洲/洛杉磯(PST)
我們怎麼樣處理這個time_zone_id問題?
P.S:我正在使用cronTrigger,它不具有由CalendarIntervalTrigger
提供的preserveHourOfDayAcrossDaylightSavings
的概念。