每“n”天执行一次 Cron 表达式

问题描述 投票:0回答:1

有这段代码:

// 翻译为“从每月 1 日开始,每 3 天 00:00 点”

var cronExpression = CronExpression.parse("0 0 0 */3 * ?"); 

//不要有任何疑问,这就是 CronExpression 解析表达式的方式:

CronField seconds = CronField.parseSeconds(fields[0]); 
CronField minutes = CronField.parseMinutes(fields[1]); 
CronField hours = CronField.parseHours(fields[2]); 
CronField daysOfMonth = CronField.parseDaysOfMonth(fields[3]); 
CronField months = CronField.parseMonth(fields[4]); 
CronField daysOfWeek = CronField.parseDaysOfWeek(fields[5]);

var currentEndDate = ZonedDateTime.ofInstant(Instant.parse(2024-10-21T00:00:00Z),  ZoneId.of("America/New_York"));

var nextEndDate = cronExpression.next(currentEndDate);

nextEndDate 的值是多少?

10 月 24 日? ..相差3天?

10 月 22 日“从该月 1 日开始,每 3 天 00:00 点”意味着:

1, 4, 7, 10, 13, 16, 19,

22, 25, ...

谢谢!

java spring-boot cron timezone
1个回答
0
投票
按照评论中的建议,再次调用即可:

var date1 = cronExpression.next(nextEndDate); var date2 = cronExpression.next(date1); var date3 = cronExpression.next(date2); var date4 = cronExpression.next(date3); System.out.println("date1="+date1); System.out.println("date2="+date2); System.out.println("date3="+date3); System.out.println("date4="+date4);
    
© www.soinside.com 2019 - 2024. All rights reserved.