亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在給定時間安排任務,例如早上 7:15

如何在給定時間安排任務,例如早上 7:15

森林海 2023-06-08 17:35:46
所以我想在特定時間安排一個任務,比如早上 7:15,并想執行一次,我想使用 Quartz,但它讓任務每隔一段時間執行一次(例如 5 分鐘),但我不我不想這樣,我想根據實時時間安排任務。謝謝
查看完整描述

3 回答

?
呼啦一陣風

TA貢獻1802條經驗 獲得超6個贊

并想執行一次,


我的一些舊代碼可以觸發一次性的預定工作


Calendar cal = Calendar.getInstance();

SimpleDateFormat df = new SimpleDateFormat("yyyy/MM/dd");

cal.setTime(df.parse(job.getRunatDate()));

cal.set(Calendar.HOUR_OF_DAY, Integer.parseInt(job.getRunatHour()));

cal.set(Calendar.MINUTE, Integer.parseInt(job.getRunatMin()));


log.debug ("One-off job at " + cal.getTime());


Trigger trigger = (SimpleTrigger) TriggerBuilder.newTrigger()?

? ? ? ? ? ? ? ? ? ? .withIdentity("trigger" + job.getLineNumber(), "group1")

? ? ? ? ? ? ? ? ? ? .startAt(cal.getTime())?

? ? ? ? ? ? ? ? ? ? ?.build();


sched = new StdSchedulerFactory().getScheduler();

sched.start();

sched.scheduleJob(job, trigger);

查看完整回答
反對 回復 2023-06-08
?
精慕HU

TA貢獻1845條經驗 獲得超8個贊

獲取您想要的時區中看到的當前時刻。


ZoneId z = ZoneId.of( "America/Montreal" ) ;

ZonedDateTime zdtNow = ZonedDateTime.now( z ) ;

定義你的目標時間。


LocalTime targetTime = LocalTime.of( 7 , 15 ) ;

與當前時間進行比較。


LocalTime timeNow = zdtNow.toLocalTime() ;

ZonedDateTime targetZdt = zdtNow.with( targetTime ) ;

if( ! timeNow.isbefore( targetTime ) )

{

? ? targetZdt = targetZdt.plusDays( 1 ) ;? // Auto-adjusts if this time of day is not valid on that date in that zone.?

}

計算到那時為止經過的時間。


Duration d = Duration.between( zdtNow , targetZdt ) ;

ScheduledExcutorService在等待 Duration 中的時間量后,使用 Executors 框架以單線程安排您的 Runnable 任務。

查看完整回答
反對 回復 2023-06-08
?
慕村9548890

TA貢獻1884條經驗 獲得超4個贊

謝謝你們的幫助,我在這里找到了答案:

CronTrigger 示例 1 - 用于創建每 5 分鐘觸發一次的觸發器的表達式

“0 0/5 * * * ?”

CronTrigger 示例 2 - 創建觸發器的表達式,該觸發器每 5 分鐘觸發一次,在該分鐘后的 10 秒(即上午 10:00:10、上午 10:05:10 等)觸發。

“10 0/5 * * * ?”

CronTrigger 示例 3 - 用于創建觸發器的表達式,該觸發器在每周三和周五的 10:30、11:30、12:30 和 13:30 觸發。

“0 30 10-13 ?* 周三、周五”

CronTrigger 示例 4 - 創建觸發器的表達式,該觸發器在每月 5 號和 20 號的上午 8 點到 10 點之間每半小時觸發一次。請注意,觸發器不會在上午 10:00 觸發,僅在 8:00、8:30、9:00 和 9:30 觸發

“0 0/30 8-9 5,20 * ?”

請注意,某些調度要求過于復雜,無法用單個觸發器來表達——例如“上午 9:00 到 10:00 之間每 5 分鐘一次,下午 1:00 到 10:00 之間每 20 分鐘一次”。這種情況下的解決方案是簡單地創建兩個觸發器,并注冊它們以運行同一個作業。


查看完整回答
反對 回復 2023-06-08
  • 3 回答
  • 0 關注
  • 207 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號