2011-09-20 9 views
6

Mi chiedo quando ho creato qualcosa di simileA che ora mi trovo in Quartz.net?

Trigger trigger = TriggerUtils.MakeDailyTrigger("abc", 5, 00); 

io pongo per 05:00. È l'ora del server alle 5:00 o l'ora UTC?

risposta

4

Utilizza l'ora UTC, tuttavia non è correttamente documented.

Modifica: in realtà sembra che abbia usato entrambi! Le versioni precedenti alla 0.9 usate l'ora locale, quelle dopo l'uso UTC (source), quindi dovrebbe essere UTC fintanto che si utilizza una versione recente.

+0

non riesce a trovare alcuna menzione di UTC o l'ora locale nella guida alla migrazione di cui sopra ... forse Quartz.Net spostato il doc? – w4ik

+0

@ w4ik sì sembra che abbiano spostato i loro documenti, vedranno se riesco a trovare un'altra copia –

4

5:00 am Ora UTC. Public Quartz.NET API sempre expects volte in formato UTC. Cordiali saluti, MakeDailyTrigger è solo una scorciatoia per CronTrigger con seguente formato:

string.Format("0 {0} {1} ? * *", minute, hour) 
+0

Divertente, non sapevo su MakeDailyTrigger, quindi ho finito con il codice string.format esattamente come sopra. Vorrei che il quarzo avesse una documentazione migliore. – nocarrier

1

Credo che quando si immette un'ora nell'argomento ora nel metodo MakeDailyTrigger che Quartz.Net si aspetta ora locale ... Internamente al quarzo .net converte questa volta in UTC, ma se inserisci 5 nell'argomento dell'ora il trigger si attiverà alle 5:00 ora locale.

Prova questa

 Trigger trigger = 
      TriggerUtils.MakeDailyTrigger("trigger",5,0);    

     var ttimes = TriggerUtils.ComputeFireTimes(trigger, null, 1); 
     foreach (DateTime ttime in ttimes) 
     { 
      Console.WriteLine(ttime); 
      'ttime is in UTC - so for EST, ttime.Hour would be 10AM 
      'however ttime.ToLocalTime().Hour would be 5AM 
     } 
+0

Solo FYI, Quartz.net 2.0.1 non supporta l'ora UTC, ma questo è stato risolto in 2.1.0. L'ho imparato nel modo più duro. – nocarrier

Problemi correlati