I want a cron expression which fires every 45 minutes.
According to the documentation, I have created this 0 0/45 * * * ? expression.
But it is fired in a pattern like 12:00, 12:45, 13:00, 13:45, 14:00.
But what I expect and want is to be fired at 12:00, 12:45, 13:30, 14:15.
What am I missing?
解决方案
Cron is not meant to solve such problems. It defines the exact date and times, when a trigger must be fired, not intervals. Use a simple schedule instead:
TriggerBuilder.Create()
.StartAt(startDate)
.WithSimpleSchedule(
simpleScheduleBuilder => simpleScheduleBuilder.WithIntervalInMinutes(45))
.Build();
Edit:
It's either a simple schedule as above, or multiple cron triggers (Quartz jobs can have multiple triggers):
0 0/45 12/3 * * ? # 12:00, 12:45, 15:00, 15:45, ...
0 30 13/3 * * ? # 13:30, 16:30, ...
0 15 14/3 * * ? # 14:15, 17:15, ...