Java Quartz 默认时区

标签 java timezone quartz-scheduler

我使用 -Duser.timezone=UTC 运行 Tomcat。然而,Quartz scheduler 2.2.1 似乎在欧洲/布拉格运行,这是我的操作系统时区。

有没有办法在自定义时区运行 Quartz 或确定 Quartz 使用的时区? 如果没有,有没有办法以编程方式确定操作系统时区?

最佳答案

默认情况下,Quartz 将使用默认的系统区域设置和时区,并且它不会被编程为获取您提供的应用程序的属性 user.timezone。还请记住,这仅适用于 CronTrigger 而不是 SimpleTrigger。

例如,如果您使用的是 Spring:

 <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>

如果您使用的是纯 java:

Trigger yourTrigger = TriggerBuilder
                .newTrigger()
                .withIdentity("TRIGGER-ID", "TRIGGER-GROUP")
                .withSchedule(CronScheduleBuilder
                         .cronSchedule("0 0 0/1 * * ?")
                         .inTimeZone(TimeZone.getTimeZone("GMT")))
                ).build();

关于Java Quartz 默认时区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19545181/

相关文章:

java - Keycloak和Spring Boot : session creation policy

java - 更改 Android 中 TableLayout 中 TextView 和 Column 的文本大小

javascript - jquery gettime总是使时间早于4小时

python - 格式化时间 Django 模板

java - 在定义的时间间隔内运行 Spring 作业

java - 异常退出的 quartz 作业的数据持久性?

java - 使用 try-with-resources 时,没有引用的资源是否也会自动关闭

java - 在 Webview 中加载 Flash,我迷路了

java - 为什么负 DST 时间有标准时区名称?

macos - 奇数尺寸的 CALayer 模糊