2017-11-04 65 views
0

我的服務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表的外觀。

enter image description here

你可能注意到了,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的概念。

回答