Quartz scheduler 使用startdate和时区设置quartz时间表

Quartz scheduler 使用startdate和时区设置quartz时间表,quartz-scheduler,Quartz Scheduler,我有以下方法来安排在不同的时区和开始日期解雇作业 如果服务器的时区为亚洲/台北,并且计划设置为以下输入: triggerName="testTrigger", jobName="testJob", group="testGroup", startDate = 2014-12-03 18:00:00 timezoneString = "Austrailia/Melbourne" cronExp = 0 0/1 * 1/1 * ? * 发射时间应该是什么时候 public void sch

我有以下方法来安排在不同的时区和开始日期解雇作业

如果服务器的时区为亚洲/台北,并且计划设置为以下输入:

triggerName="testTrigger",
jobName="testJob", 
group="testGroup", 
startDate = 2014-12-03 18:00:00
timezoneString = "Austrailia/Melbourne"
cronExp = 0 0/1 * 1/1 * ? *
发射时间应该是什么时候

  public void schedule(String triggerName, String jobName, String group, Date startDate,       String timezoneString, String cronExp){
    try {
        JobDetail jobDetail = new JobDetail(jobName, group, MessageJob.class);

        TimeZone timeZone = TimeZone.getTimeZone(timezoneString);
        Date startDate = startDate;

        Calendar cal1 = Calendar.getInstance();
        cal1.setTime(startDate);
        cal1.setTimeZone(timeZone);
        startDate = cal1.getTime();

        CronTrigger cronTrigger = new  CronTrigger(triggerName, group, jobName, jobGroup, startDate, null, cronExp, timeZone);
        scheduler.start();

    } catch (ParseException e) {
        System.out.println("ParseException issues " + e.getMessage());
    }catch(IllegalArgumentException e){
        System.out.println("IllegalArgumentException issues " + e.getMessage());
    }
}

如果在石英cron触发器中明确设置了不同的时区,则触发器将根据指定时区中的触发器配置触发。即,将使用澳大利亚/墨尔本时区评估您的cron触发器表达式

为了证明这一点,我在年用澳大利亚/墨尔本时区创建了一个cron触发器示例。我当地的时区是CET(中欧时间)。在GUI中,您可以清楚地看到Quartz返回的触发器的下一次触发时间是2014-12-04 14:00:00(在本地CET时区)

现在,当你将这个时间转换为澳大利亚/墨尔本时区(我使用这个),我得到2014-12-04 00:00:00,这是预期的触发时间:

至于当cron表达式(0 0/1*1/1*?*)启动时,它在澳大利亚/墨尔本时区每小时(01:00:00,01:01:00,…)每分钟启动一次。现在考虑到台北是澳大利亚/墨尔本+3小时,那么您所在时区的火灾时间将是21:01:00、21:02:00