6

2013 年の夏時間 (米国) は、3 月 10 日日曜日の午前 2:00 に始まりました。たとえば、現在は 2013 年 3 月 9 日で、作成済みの待機可能なタイマー ハンドルで次の API を呼び出します。

FILETIME ftWhen = //Points as absolute time to March 10th, 2013, at 2:10 AM
SetWaitableTimer(hTimer, ftWhen, 0, NULL, NULL, TRUE);

March 10th, 2013, 2:10 AM時刻は 1 時間前に調整され、午前 2 時ではなく午前 3 時になるため、存在しない時刻です。

私の質問ですが、私のタイマーはどうなりますか? (この場合のドキュメントが見つからないようです。)

4

2 に答える 2

7

あなたのコメントは明示的に述べているので、あなたはあなたの質問に対する答えをすでに知っていると思います:

// Points _as absolute time_ to March 10th, 2013, at 2:10 AM

したがって、 SetWaitableTimer()のドキュメントに次のように記載されていることに注意してください。

システムは内部的に UTC ベースの時刻を使用するため、必ず UTC ベースの絶対時刻を使用してください。

UTC は DST をまったく気にしないため、タイマーは現地時間March 10th, 2013, 3:10 AMにトリガーされます。

于 2013-04-07T09:30:06.560 に答える
3

SetWaitableTimerpDueTimeが UTC で与えられることを期待します。したがって、そのような存在しない日付/時刻で呼び出す方法はありません。

于 2013-04-07T09:29:55.970 に答える