2011-09-20 23 views
6

tôi tự hỏi khi tôi đặt một cái gì đó như thế nàyTôi đang làm gì với Quartz.net?

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

Tôi đặt nó cho 05:00. Đây có phải là 5:00 giờ máy chủ hay giờ UTC không?

Trả lời

4

Nó sử dụng thời gian UTC, tuy nhiên điều này không đúng cách documented.

Chỉnh sửa: thực sự có vẻ như nó đã sử dụng cả hai! Các phiên bản trước 0.9 sử dụng giờ địa phương, những người sau khi sử dụng UTC (source), vì vậy nó phải là UTC miễn là bạn đang sử dụng một phiên bản gần đây.

+0

không thể tìm thấy bất kỳ đề cập đến UTC hoặc giờ địa phương hướng dẫn chuyển đổi nêu trên ... có lẽ Quartz.Net chuyển doc? – w4ik

+0

@ w4ik có họ dường như đã chuyển tài liệu của họ, sẽ xem liệu tôi có thể tìm thấy một bản sao khác –

4

5:00 giờ UTC. API Quartz.NET công khai luôn expects lần ở định dạng UTC. Chỉ cần FYI, MakeDailyTrigger chỉ là một phím tắt để CronTrigger với định dạng sau:

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

Hài hước, tôi không biết về MakeDailyTrigger, vì vậy tôi đã kết thúc bằng mã string.format chính xác như trên. Tôi muốn Quartz có tài liệu tốt hơn. – nocarrier

1

Tôi tin rằng khi bạn nhập một giờ trong đối số giờ trong phương pháp MakeDailyTrigger rằng Quartz.Net dự kiến ​​theo giờ địa phương ... Bên trong thạch anh .net chuyển đổi thời gian này thành UTC, nhưng nếu bạn nhập 5 trong đối số giờ, trigger sẽ kích hoạt lúc 5 giờ sáng giờ địa phương.

Hãy thử điều này

 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

Chỉ cần FYI, Quartz.net 2.0.1 không hỗ trợ thời gian UTC, nhưng điều này đã được sửa trong 2.1.0. Tôi học được điều này một cách khó khăn. – nocarrier

Các vấn đề liên quan