Quartz.netは、次のトリガーイベントの次回を取得する方法を提供します。 http://quartznet.sourceforge.net/apidoc/1.0/html/html/cc03bb79-c0c4-6d84-3d05-a17f59727c98.htm
ドキュメントは、このTrigger.GetNextFireTimeUtc()
メソッドが_DateTime?
_を返すと主張していますが、実際には_DateTimeOffset?
_を返します。 DateTimeOffset
の目的や、この関数が通常のDateTime
の代わりに関数を返す理由がわかりません。次に必要なのは、次回トリガーが実行されるときですが、自分のタイムゾーン内です。
私はこれをtrigger.GetNextFireTimeUtc().Value.DateTime
しましたが、2時間早い時間、つまりUTC時間を与えてくれました。コンピュータに応じて正しい時刻を取得するにはどうすればよいですか?
DateTimeOffset.LocalDateTime
プロパティ:
trigger.GetNextFireTimeUtc().Value.LocalDateTime
ドキュメントから:
必要に応じて、LocalDateTimeプロパティは現在のDateTimeOffsetオブジェクトの日付と時刻をローカルシステムの日付と時刻に変換します。変換は2段階の操作です。
- このプロパティは、現在のDateTimeOffsetオブジェクトの時刻を協定世界時(UTC)に変換します。
- 次に、プロパティはUTCを現地時間に変換します。
ただし、実際にはDateTimeOffset
を調べる必要があります。これは、日付/時刻の作業にBCLを使用しているかどうかを理解するために重要なタイプです。