我需要在调度作业时使用网络验证的时间。
解决办法?
石英.NET的细节-在那里我被困在我的调查
我无法找到如何使用属性StartTimeUtc of ITrigger (用下面的StartAt方法设置)?
var sleepTrigger = (ISimpleTrigger)TriggerBuilder.Create()
.WithIdentity("SleepTimeTrigger")
.StartAt(sleepRunTime)
.WithSimpleSchedule(x => x.WithIntervalInHours(24).RepeatForever())
.Build();也就是说,我需要检查使用StartTimeUtc时间戳的具体实现,以便更改调度源代码/添加一个选项来独立于本地系统时间进行调度,并使用网络时间。
发布于 2013-08-25 22:57:26
Quartz命名空间下有一个静态类,它有两个方法接收一个Func<DateTimeOffset>,您可以使用它返回您的NTP调优日期/时间。它是“正式”Quartz日期/时间源,它的实现允许简单的单元测试,但也可以用于自定义日期/时间。下面是一个示例用法:
SystemTime.Now = () => {
//return your custom datetime here
/*
var ntpTime = new NtpTime(server);
return ntpTime.NowDateTimeOffset;
*/
};
SystemTime.UtcNow = () => {
//return your custom datetime here
/*
var ntpTime = new NtpTime(server);
return ntpTime.UtcNowDateTimeOffset;
*/
};注意上面的代码不会编译,您需要为Now和UtcNow实现自己的获取当前Now和UtcNow的方法。从NTP获取时间有很多方法,您可以找到一些方法这里和这里。出于性能考虑,我建议您的实现缓存当前的日期时间并在本地增加它,而不是在每次调用时请求ntp服务器。
https://stackoverflow.com/questions/17047615
复制相似问题