Quartz.Net comment créer un programme quotidien qui n'a pas gain de 1 minute par jour
Je suis en train de construire une répétition de l'horaire quotidien dans Quartz.Net mais le fait d'avoir quelques questions:
Tout d'abord, j'ai construit un programme quotidien, repating à 12:45
À l'aide de Quartz.Net code comme ceci:
var trigger = TriggerBuilder.Create()
.WithDailyTimeIntervalSchedule(s =>
s.OnEveryDay().StartingDailyAt(new TimeOfDay(13, 00)))
.Build();
var times = TriggerUtils.ComputeFireTimes(trigger as IOperableTrigger, null, 10);
foreach (var time in times) Console.WriteLine(time);
C'est exécutée en Nouvelle-Zélande, de l'heure d'été (donc UTC+13:00)
Et le résultat que j'obtiens est plutôt étrange:
5/10/2012 1:00:00 p.m. +13:00
5/10/2012 12:01:00 a.m. +00:00
5/10/2012 12:02:00 a.m. +00:00
5/10/2012 12:03:00 a.m. +00:00
5/10/2012 12:04:00 a.m. +00:00
5/10/2012 12:05:00 a.m. +00:00
5/10/2012 12:06:00 a.m. +00:00
5/10/2012 12:07:00 a.m. +00:00
5/10/2012 12:08:00 a.m. +00:00
5/10/2012 12:09:00 a.m. +00:00
La première date/heure s'affiche à l'aide de fuseau horaire local, puis le reste sont affichés avec l'UTC, et à chaque fois que la valeur est incrémentée de 1 minute, et la date ne change jamais.
Je me sens comme je l'ai peut-être raté quelque chose de fondamental ici avec le quotidien de l'intervalle de temps sur le calendrier, mais je ne sais pas ce que c'est?
Modifier
Comme une mise à jour pour ce faire, j'ai maintenant passé à l'aide d'une expression CRON en fonction du déclencheur:
TriggerBuilder.Create()
.WithCronSchedule(string.Format("0 {0} {1} ? * *", 0, 13))
.Build();
Et il m'a donné les résultats que j'attend:
5/10/2012 12:00:00 a.m. +00:00
6/10/2012 12:00:00 a.m. +00:00
7/10/2012 12:00:00 a.m. +00:00
8/10/2012 12:00:00 a.m. +00:00
9/10/2012 12:00:00 a.m. +00:00
10/10/2012 12:00:00 a.m. +00:00
11/10/2012 12:00:00 a.m. +00:00
12/10/2012 12:00:00 a.m. +00:00
13/10/2012 12:00:00 a.m. +00:00
14/10/2012 12:00:00 a.m. +00:00
Mais je voudrais quand même savoir pourquoi la DailyTimeIntervale calendrier ne fonctionne pas...
- TriggerUtils.ComputeFireTimes -- génial!
Vous devez vous connecter pour publier un commentaire.
Vous n'êtes pas en spécifiant l'intervalle qui se trouve par défaut à 1 minute, de sorte qu'il suppose que vous souhaitez exécuter le travail de chaque minute.
Essayer
La valeur par défaut doit être à courir tous les jours, de sorte que le OnEveryDay() n'est pas vraiment nécessaire.
Pas sûr pourquoi vous voyez locale et l'heure UTC, comme toutes mes heures sont affichées en heure UTC.
ITrigger trigger = TriggerBuilder.Create() .WithDailyTimeIntervalSchedule (s => s.WithIntervalInHours(12)) .Build();
ouITrigger trigger = TriggerBuilder.Create() .WithDailyTimeIntervalSchedule (s => s.WithIntervalInHours(12) .OnEveryDay() .StartingDailyAt(TimeOfDay.HourAndMinuteOfDay(0, 0)) ) .Build();
Tout
WithIntervalInHours
sera probablement résoudre ce et un cron comme le calendrier est encore plus souple, je veux partager une autre solution:EndingDailyAfterCount(...)
EndingDailyAfterCount
?OnEveryDay().StartingDailyAt(TimeOfDay.HourAndMinuteOfDay(8, 0)).WithIntervalInHours(1).EndingDailyAfter(12)