用quartz实现排程,结果放到服务器下测试时,执行排程程式总是比设置的时间晚8个小时,开始还以为是机器的问题,在网上查了下,说是java用的是GMT时间,而我们的系统用的是北京时间,GMT比北京时间晚8小时。也找了些解决办法,多半是说要更改java的虚拟机系统时间,即把它改成北京时间……有没有其他的办法,比方说直接在quartz配置档里面直接配置的,只需更改配置档,而不需更改java虚拟机的系统时间……谢谢!!!

解决方案 »

  1.   

    google一下,有种说法是在quartz的设置中配置下,不过没说清楚,拿过来大家指点研究下(部分配置档)
    红色为在原来的quartz配置的基础上新加的部分,<bean id="cronMaintenanceTrigger" class="org.springframework.scheduling.quartz.CronTriggerB ean">
    <property name="jobDetail">
    <ref bean="maintenanceJob"/>
    </property>
    <property name="cronExpression">
    <value>0 0 18 ? * MON-FRI</value>
    </property>
    <bean id="timeZone" class="java.util.TimeZone" factory-method="getTimeZone">
    <constructor-arg>Asia/Beijing</constructor-arg>
    </bean>

    <property name="timeZone">
    <value>CST</value>
    </property>
    </bean>