-Duser.timezone=UTC
으로 Tomcat을 실행합니다. 그러나 석영 스케줄러 2.2.1 유럽/프라하 내 OS 시간대입니다에서 실행하는 것 같습니다.Java Quartz 기본 시간대
사용자 정의 시간대에서 Quartz를 실행하거나 Quartz가 사용하는 시간대를 결정하는 방법이 있습니까? 그렇지 않은 경우 프로그래밍 방식으로 OS 시간대를 확인할 수있는 방법이 있습니까?
-Duser.timezone=UTC
으로 Tomcat을 실행합니다. 그러나 석영 스케줄러 2.2.1 유럽/프라하 내 OS 시간대입니다에서 실행하는 것 같습니다.Java Quartz 기본 시간대
사용자 정의 시간대에서 Quartz를 실행하거나 Quartz가 사용하는 시간대를 결정하는 방법이 있습니까? 그렇지 않은 경우 프로그래밍 방식으로 OS 시간대를 확인할 수있는 방법이 있습니까?
setTimeZone()을 호출하면 BaseCalendar을 상속 한 Quartz의 모든 항목에 대해 선택한 시간대를 설정할 수 있습니다.
Java의 TimeZone 클래스는 프로그래밍 방식으로 OS 시간대를 결정하는 데 도움이되는 getDefault()을가집니다.
XML 구성 파일을 사용하는 경우. mkyong의 Example To Run Multiple Jobs In Quartz에서 quartz-config.xml
, 당신은 요소 time-zone
에서 시간대를 구성 할 수 있습니다 : 여러 시간대의 ID를 볼 수 있도록
<schedule>
<job>
<name>JobA</name>
<group>GroupDummy</group>
<description>This is Job A</description>
<job-class>com.mkyong.quartz.JobA</job-class>
</job>
<trigger>
<cron>
<name>dummyTriggerNameA</name>
<job-name>JobA</job-name>
<job-group>GroupDummy</job-group>
<!-- It will run every 5 seconds -->
<cron-expression>0/5 * * * * ?</cron-expression>
<time-zone>UTC</time-zone>
</cron>
</trigger>
</schedule>
도 Java's java.util.TimeZone 참조하십시오.
트리거를 프로그래밍 방식으로 설정했습니다. 또한 나는 시간 자체를 설정해야한다 석영 그 자체 – Fandic
Quartz는 기본적으로 기본 시스템 로캘과 표준 시간대를 사용하며 사용자가 user.timezone 속성을 선택하도록 프로그래밍되어 있지 않습니다. 이것은 CronTrigger에만 적용되며 SimpleTrigger에는 적용되지 않습니다.
당신은 예를 들어 스프링을 사용하는 경우 :
<bean id="timeZone" class="java.util.TimeZone" factory-method="getTimeZone">
<constructor-arg value="GMT" />
</bean>
<bean id="yourTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
<property name="jobDetail" ref="yourJob" />
<property name="cronExpression" value="0 0 0/1 * * ?" />
<property name="timeZone" ref="timeZone" />
</bean>
당신은 일반 자바 사용하는 경우 제대로 내 appologies을 내 문제를 설명 할
Trigger yourTrigger = TriggerBuilder
.newTrigger()
.withIdentity("TRIGGER-ID", "TRIGGER-GROUP")
.withSchedule(CronScheduleBuilder
.cronSchedule("0 0 0/1 * * ?")
.inTimeZone(TimeZone.getTimeZone("GMT")))
).build();
어쩌면 스피 할 수 없음. 내 앱이 석영과 다른 시간대에 실행 중입니다. 트리거가 아닌 전체 석영의 시간대를 설정해야합니다. TimeZone.getDefault()는 UTC이지만, 유럽/프라하의 쿼츠 트리거라고 말합니다. – Fandic
다른 말로하면 Quartz는'-Duser.timezone = UTC' VM 인수 – Fandic
@ Fandic을 아키텍처에 대해 설명 할 수있을 것 같습니다./setup/시나리오를 유용하게 사용할 수 있습니다. 모든 석영에 대한 시간대 설정과 관련하여 [Main Config] (http://quartz-scheduler.org/documentation/quartz-2.2.x/configuration/ConfigMain)의 일부로 제공되는 사용자 정의 키/값 쌍을 사용할 수 있습니다.) 옵션? 또한 -Duser.timezone = UTC JVM 인수를 사용하고 TimeZone.setDefault()를 사용하여이를 적용 할 수 있습니까? –