semanal secundaria programa personal para nisabelt horarios horario hacer gratis generar facil escolares como clases c# scheduling intervals quartz.net quartz.net-2.0

c# - secundaria - programa generar horarios



Quartz.Net cómo crear un horario diario que no gana 1 minuto por día (2)

Estoy intentando crear un calendario diario repetitivo en Quartz.Net pero tengo algunos problemas:

Primero, construyo un horario diario, reparando a las 12:45 usando el código Quartz.Net como este:

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

Esto se está ejecutando en Nueva Zelanda, horario de verano (UTC + 13: 00)

Y el resultado que obtengo es bastante extraño:

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 primera fecha / hora se muestra usando la zona horaria local, luego el resto se muestra con UTC, y cada valor de tiempo se incrementa en 1 minuto, y la fecha nunca cambia.

Siento que me podría estar perdiendo algo fundamental aquí con el horario de intervalo de tiempo diario, pero simplemente no sé lo que es?

Editar

Como una actualización para hacer esto, ahora he cambiado a usar un disparador basado en la expresión CRON:

TriggerBuilder.Create() .WithCronSchedule(string.Format("0 {0} {1} ? * *", 0, 13)) .Build();

Y me dio los resultados que esperaría:

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

Pero aún me gustaría saber por qué el programa DailyTimeIntervale no funciona ...


No especifica el intervalo predeterminado de 1 minuto, por lo que se supone que desea ejecutar el trabajo cada minuto.

Tratar

ITrigger trigger = TriggerBuilder.Create() .WithDailyTimeIntervalSchedule (s => s.WithIntervalInHours(24) .OnEveryDay() .StartingDailyAt(TimeOfDay.HourAndMinuteOfDay(13, 0)) ) .Build();

El valor predeterminado debe ser ejecutar todos los días, por lo que OnEveryDay () no es realmente necesario.

No estoy seguro de por qué está viendo local y UTC, ya que todos mis tiempos se muestran en UTC.


Si bien WithIntervalInHours probablemente resolverá esto y un cronograma similar a un cron es aún más flexible, quiero compartir otra solución: EndingDailyAfterCount(...)

var trigger = TriggerBuilder.Create() .WithDailyTimeIntervalSchedule(s => s .OnEveryDay() .StartingDailyAt(TimeOfDay.HourAndMinuteOfDay(13, 00))) .EndingDailyAfterCount(1)) .Build();