2011-07-08 146 views
3

这是我第一个Quartz.net项目。我完成了基本的家庭作业,所有的cron触发器都能正确启动,并且生活很好。然而,Iam很难在API文档中找到属性。我知道它在那里,却找不到它。我如何获得触发器计划触发的准确时间?如果我每天早上8点触发一个触发器,那么触发器类中的这个上午8:00存储在哪里?如何在Quartz.net中获得下一个预定的触发器触发时间

_quartzScheduler.ScheduleJob(job, trigger); 
Program.Log.InfoFormat 
("Job {0} will trigger next time at: {1}", job.FullName, trigger.WhatShouldIPutHere?); 

到目前为止我试图

GetNextFireTimeUtc(),StartTimeUTC和_quartzScheduler.ScheduleJob的返回值()如上所示。 http://quartznet.sourceforge.net/apidoc/topic645.html

触发器在正确的预定时间触发。只是化妆品。谢谢

回答

0

由于jhouse说ScheduleJob返回下一个时间表。 我正在使用Quartz.net 1.0.3。一切正常。

请记住,Quartz.net使用UTC日期/时间格式。

我用过这个cron表达式:"0 0 8 1/1 * ? *"

DateTime ft = sched.ScheduleJob(job, trigger); 

如果我打印ft.ToString("dd/MM/yyyy HH:mm")我得到这个09/07/2011 07.00
这是不正确的,因为我已经安排我的触发条件,在上午8点,每天(我在伦敦)。

如果我打印ft.ToLocalTime().ToString("dd/MM/yyyy HH:mm")我得到了我期望09/07/2011 08.00

+0

是的。那ToLocalTime()做了诀窍。忘记UTC的东西。干杯 – Gullu

+0

@Gullu:不客气。很高兴我帮了忙。 – LeftyX

+0

如果它对你有帮助,为什么post minused? –

0

你应该从getNextFireTime得到你想要的(在调用ScheduleJob()之后,该方法的值应该是准确的)。此外,ScheduleJob()方法应返回第一次启动时间的日期。

+0

也许在石英1.0.3的bug。他们都打印5个小时加我预定的触发时间。如果我的触发器在8点设置为开火,则全部打印13:00。我的触发器在8点正确启动。谢谢 – Gullu

+1

你的时区碰巧是gmt-5吗? – jhouse

+0

如果你的工作需要多个触发器,你必须使用'void scheduleJobs(Map > triggersAndJobs,boolean replace)' - 这不会返回第一次触发时间。 –

相关问题